人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Javaで、MySQLのテーブルを上書き作成する方法のコードを教えてください。ついでに、それにデータをInsertするコードも
//Connection con = getConnection();
// Statement生成
//Statement stmt = con.createStatement();
// テーブル作成SQL文
// String st = "CREATE TABLE meibo( "+
// "id INT," +
// "name VARCHAR(36)," +
// "adr VARCHAR(50)," +
// "CONSTRAINT hoge_key PRIMARY KEY (id));";

// SQL実行
// stmt.execute( st );
// stmt.close();
では、テーブルがある場合にエラーになります。

●質問者: kojiro_i619
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

質問者から

データのインサートを以下のようにしていますが、idへの入力が
Duplicate entry '4' for key 'PRIMARY'などと、入力できたりできなかったりします。
//String SQL = "insert into meibo (id,name,adr) VALUES (?,?)";
// try(PreparedStatement ps = con.prepareStatement(SQL)){
//ps.setInt(1,5);
// ps.setString(1,"康二郎");
// ps.setString(2,"aji");
// ps.executeUpdate();
//con.commit();
// con.close();
// System.out.println("End");
// }


1 ● kaoato
●180ポイント ベストアンサー

javaでなくて、SQL文をすこし調べられては?




>CREATE TABLE
>では、テーブルがある場合にエラーになります。

これはテーブルを作成するSQLなので、すでにテーブルが存在するとエラーになります。
仕様通り。


テーブル =>ファイル
データ =>ファイルの中身

テーブルは一度作成すれば、データを追記、更新、削除するには触る必要がない。

テーブルが存在したら動作しないようなロジックを組むしかないのでは?



>Duplicate entry '4' for key 'PRIMARY'

CREATE TABLEで、IDがプライマリーキーにしていると、
同じ数字のデータは、重複キーでエラーになります。
これも仕様通り。

プライマリーキーの属性を外す等の方法があります。


>MySQLのテーブルを上書き作成する方法

データの話なら、SQLは、insert文でなくて、update文。
テーブルの話なら、CREATE TABLEの代わりに、ALTER TABLE文。

でも、質問文はそういう意味でもなさそうな。


DBは何を使用しているのか不明ですが、
テーブルは、DBの管理ツールで作成しては?
データに関してのみ、javaからSQLでinsert、update、deleteを実行しては?


kojiro_i619さんのコメント
おっしゃるとおり、DBの管理ツールで、DBを作成しといて、一挙にテーブル、データ挿入したいと思います。alter tableでの具体的な文章がほしいです。

kaoatoさんのコメント
>alter tableでの具体的な文章がほしいです。 MySQL ですね。 https://dev.mysql.com/doc/refman/5.6/ja/alter-table.html 単に、SQL文の話で、javaにあまり関係ないと思います。

kaoatoさんのコメント
>> MySQLでは SHOW TABLES でテーブル名の一覧を調べることができます。 また、MySQL 3.22以降なら CREATE TABLE で「IF NOT EXISTS」をつけると、すでにテーブルが存在した場合 上書きせず、 エラーも返さずに終了します。 例) CREATE TABLE IF NOT EXISTS TEST( id int, txt varchar(10) ) https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1211594657 << やり方はいろいろあって、どれが正解かは、要件によると思います。 java関係ないですが、Wordpressとかでは、「SHOW TABLES」でテーブルの存在チェックをしてから作成しているように見えます。

2 ● uunfo
●20ポイント

何をやりたいのかさっぱりわかりませんが。

MySQLのテーブルを上書き作成する方法のコードを教えてください

drop table if exists meibo;

単純にエラーを出ないようにしたいなら
create table if not exists meibo (id int, ...) ;


MySQLかSQLの本を読んだ方がいいよ。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ