//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();
では、テーブルがある場合にエラーになります。
データのインサートを以下のようにしていますが、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");
// }
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を実行しては?
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を実行しては?
>alter tableでの具体的な文章がほしいです。
MySQL ですね。
https://dev.mysql.com/doc/refman/5.6/ja/alter-table.html
単に、SQL文の話で、javaにあまり関係ないと思います。
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」でテーブルの存在チェックをしてから作成しているように見えます。
何をやりたいのかさっぱりわかりませんが。
MySQLのテーブルを上書き作成する方法のコードを教えてください
drop table if exists meibo;
単純にエラーを出ないようにしたいなら
create table if not exists meibo (id int, ...) ;
MySQLかSQLの本を読んだ方がいいよ。
>alter tableでの具体的な文章がほしいです。
2018/06/21 16:22:15MySQL ですね。
https://dev.mysql.com/doc/refman/5.6/ja/alter-table.html
単に、SQL文の話で、javaにあまり関係ないと思います。
やり方はいろいろあって、どれが正解かは、要件によると思います。
2018/06/21 17:27:13java関係ないですが、Wordpressとかでは、「SHOW TABLES」でテーブルの存在チェックをしてから作成しているように見えます。