2013-07-28 67 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')";