0

存在しない場合、手動で値を挿入するにはどうすればよいですか...次のコードを試しましたが、エラーが発生しました。

 String sql1 = "CREATE TABLE IF NOT EXISTS admin " +
                    "(id INTEGER not NULL AUTO_INCREMENT, " +
                    " user_name VARCHAR(255), " + 
                    " password VARCHAR(255), " + 
                    " isAdmin BOOLEAN NOT NULL DEFAULT '0', " + 
                    " memo VARCHAR(255), " + 
                    " PRIMARY KEY ( id ))"; 
            stmt.executeUpdate(sql1);

            String insert="INSERT INTO admin IF NOT EXISTS(id,user_name,password,isAdmin,memo)VALUES(1,'admin','admin',1,'memo')";
            stmt.executeUpdate(insert);

次のようなエラーが発生します

 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS(id,user_name,password,isAdmin,memo)VALUES(1,'admin','admin',1,'mem' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
4

3 に答える 3

1
 String insert="INSERT INTO admin IF NOT EXISTS(id,user_name,password,isAdmin,memo)VALUES(1,'admin','admin',1,'memo')";

する必要があります

 String insert="INSERT IGNORE INTO admin (id,user_name,password,isAdmin,memo)VALUES(1,'admin','admin',1,'memo')";
于 2013-07-28T17:14:05.500 に答える
0

MySQL (およびその他の SQL 実装も同様) は、クエリをサポートIF NOT EXISTSしていません。INSERT

あなたのINSERTクエリは

"INSERT IGNORE INTO admin (id,user_name,password,isAdmin,memo) VALUES (1,'admin','admin',1,'memo')"
于 2013-07-28T17:12:24.260 に答える
0

必要なのはINSERT ... ON DUPLICATE KEY UPDATEまたはINSERT IGNORE... です

前者は重複挿入が検出された場合に既存の行を更新しますが、後者は重複挿入を単に破棄します。

どちらの場合も、重複をチェックする列に UNIQUE 制約を作成する必要があります。UNIQUE に違反すると、代替機能が呼び出されます。

于 2013-07-28T17:14:03.717 に答える