Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试将数据插入MySQL时出错_Java_Mysql_Jdbc - Fatal编程技术网

Java 尝试将数据插入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

在将数据插入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 (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