数据库值插入错误

时间:2013-07-28 17:09:22

标签: java jquery mysql database

如果不存在,我如何手动插入值...我尝试了以下代码,但它产生错误。如果表中不存在,我可以插入值

 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)

3 个答案:

答案 0 :(得分: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')";

答案 1 :(得分:0)

MySQL(以及任何其他SQL实现)不支持IF NOT EXISTS查询中的INSERT

您的INSERT查询必须

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

答案 2 :(得分:0)

您想要的可能是INSERT ... ON DUPLICATE KEY UPDATEINSERT IGNORE...

如果检测到重复插入,前者将更新现有行,而后者将丢弃重复插入。

在这两种情况下,您都必须在要检查重复项的列上创建UNIQUE约束。如果违反了UNIQUE,则调用alternate函数。