2013-07-28 68 views
0

如何,如果不存在...我嘗試下面的代碼,但它產生error.How可如果表中不存在數據庫值插入錯誤

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) 

回答

0

的MySQL(和任何其他SQL實現一樣)不支持IF NOT EXISTSINSERT查詢。

INSERT查詢必須

"INSERT IGNORE INTO admin (id,user_name,password,isAdmin,memo) VALUES (1,'admin','admin',1,'memo')" 
0

你想可能是INSERT ... ON DUPLICATE KEY UPDATEINSERT IGNORE...什麼。

如果檢測到重複的插入,前者將更新現有的行,而後者將丟棄重複的插入。

在這兩種情況下,您都必須在要檢查重複項的列上創建UNIQUE約束。如果違反UNIQUE,則調用備用函數。

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')";