Java 尝试将数据插入MySQL时出错
在将数据插入MySQL之前,我使用下面的代码进行检查。然而,我得到的错误如下Java 尝试将数据插入MySQL时出错,java,mysql,jdbc,Java,Mysql,Jdbc,在将数据插入MySQL之前,我使用下面的代码进行检查。然而,我得到的错误如下 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 'WHERE NOT EXISTS
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 'WHERE NOT EXISTS (SELECT * FROM movie_title WHERE title = 'ABC')' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
这是我的密码
public void checkAndAdd(String movieTitle) throws Exception {
// TODO Auto-generated method stub
DatabaseConnection db=new DatabaseConnection();
Connection connect=db.getConnection();
String sql="INSERT INTO movie_title(title) VALUES (?) WHERE NOT EXISTS (SELECT * FROM movie_title WHERE title = ?)";
PreparedStatement ps=connect.prepareStatement(sql);
ps.setString(1,movieTitle);
ps.setString(2,movieTitle);
ps.executeUpdate();
connect.close();
ps.close();
}
编辑
在使用VALUES关键字时,不能在SQL中放入WHERE子句。试着这样做:
IF NOT EXISTS(SELECT 1 FROM movie_title WHERE title = ?)
INSERT INTO movie_title (title)
VALUES (?)
我主要使用SQL Server,所以我不确定这对MySQL是否完全有效,但它将是类似的
好的,对于MySQL,它必须有一点不同:
INSERT INTO movie_title (title)
SELECT mt.title
FROM
(SELECT ? title) mt
WHERE NOT EXISTS (
SELECT 1 FROM movie_title WHERE title = ?)
在使用VALUES关键字时,不能在SQL中放入WHERE子句。试着这样做:
IF NOT EXISTS(SELECT 1 FROM movie_title WHERE title = ?)
INSERT INTO movie_title (title)
VALUES (?)
我主要使用SQL Server,所以我不确定这对MySQL是否完全有效,但它将是类似的
好的,对于MySQL,它必须有一点不同:
INSERT INTO movie_title (title)
SELECT mt.title
FROM
(SELECT ? title) mt
WHERE NOT EXISTS (
SELECT 1 FROM movie_title WHERE title = ?)
您的意思是字符串sql=如果不存在请从电影标题中选择1,其中标题=?插入电影标题值?是的,我刚刚编辑了查询本身,但您可以将其放入这样的字符串中;查看与您的MySQL服务器版本对应的手册,以了解可在“如果不存在,请从电影标题中选择*”附近使用的正确语法,其中标题=“1”插入到电影标题中,在第1行movieTitle参数保持1。在这一行中,我应该更改什么?从电影标题中选择1,其中title=?就像上面mmcrae所说的,直接在MySQL中尝试,然后从那里调试。选择1应该很好,我只是不完全确定如何使用?有关参数。更换?你的意思是字符串sql=如果不存在请从电影标题中选择1,其中标题=?插入电影标题值?是的,我刚刚编辑了查询本身,但您可以将其放入这样的字符串中;查看与您的MySQL服务器版本对应的手册,以了解可在“如果不存在,请从电影标题中选择*”附近使用的正确语法,其中标题=“1”插入到电影标题中,在第1行movieTitle参数保持1。在这一行中,我应该更改什么?从电影标题中选择1,其中title=?就像上面mmcrae所说的,直接在MySQL中尝试,然后从那里调试。选择1应该很好,我只是不完全确定如何使用?有关参数。更换?如何找到你的问题:使用Java执行的SQL,将它复制到mysql并运行它。当mysql给您一个错误时,调试您的SQLHow以发现您的问题:获取您在Java中执行的SQL,将其复制到mysql中并运行它。当mysql出现错误时,调试SQL