有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql java preparedstatement insert(如果不存在)

我试图把数据填入我的数据库。但我不想要基于时间的怀疑。我不在乎那些可疑的人,因为我不会丢失任何数据。 经过长时间的搜索,我终于发现,不能将WHERE NOT EXISTINSERT INTO一起使用

但现在我有了下一个问题。我试过这两种方法,但都不管用

      /*
      preparedStatement = connect.prepareStatement("IF NOT EXISTS(SELECT * FROM gpsdata.data where time=?) "
            + "Begin "
            + "INSERT INTO gpsdata.data VALUES (default, ?, ? , ?, ?, ?, ?, ?, ?) "+
              "END");
      */
      preparedStatement = connect.prepareStatement("INSERT INTO gpsdata.data VALUES (default, ?, ? , ?, ?, ?, ?, ?, ?) "
            + "SELECT ? FROM gpsdata.data WHERE NOT EXISTS(SELECT * FROM gpsdata.data where time = ?)");

两者都给了我一些mysql语法错误。我搞不懂怎么了。我是mysql新手。最后一次尝试给了我至少一个不同的错误:

MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual... ... to use near 'SELECT 1448982118099 WHERE NOT EXISTS(SELECT * FROM gpsdata.data where time =14') at line 1

在检查dublicates之前,代码运行良好。所以这应该是新的声明

问候, 埃里克

编辑:我不想将数据复制到其他表中


共 (2) 个答案

  1. # 1 楼答案

    ?不是SELECT ?中的有效参数。你必须按字面意思命名一列

  2. # 2 楼答案

    为了连接插入参数零件和条件零件,可以使用从双中选择。 我曾与甲骨文公司尝试过下面的说法

    preparedStatement = connect.prepareStatement("INSERT INTO gpsdata.data select 'default', ?, ? , ?, ?, ?, ?, ?, ? from dual
                WHERE NOT EXISTS(SELECT * FROM gpsdata.data where time = ?)");
    

    ps:请注意,您使用时间变量两次