您的SQL语法有错误(但没有错误)

时间:2018-07-16 16:37:04

标签: mysql jdbc mariadb

JDBC给了我这个错误。

  

严重:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:   您的SQL语法有误;检查手册   对应于您的MariaDB服务器版本,以使用正确的语法   在'INSERT INTO entitytwitterusertofollow附近   VALUES(0,NULL,NULL,1018880775335436288,F'在第2行

我有一个巨大的Java String,上面有数千行:

INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,984815801063571456,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,1018880775335436288,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,845199742065827841,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,1018871764624035840,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,811280845638090752,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,1018804045635641344,FALSE,1);
INSERT INTO `entitytwitterusertofollow` VALUES(0,NULL,NULL,1018784953839038464,FALSE,1);

但是,如果我进行调试,请查看我的String,将其保存在文件中,然后将其导入MariaDB中,一切都很好。

JDBC有什么问题?

1 个答案:

答案 0 :(得分:2)

我实际上是在使用错误代码 ...

在JDBC中,我们应该使用addBatch(sql);来执行这种操作。

for (...) {
    final String sql = "INSERT INTO `entitytwitterusertofollow` (ENTITYUSERID, ENTITYTWITTERCONCURRENT_ID) VALUES("+ id + "," + concurrent.getId() + ");";
    statement.addBatch(sql);
}

statement.executeBatch();
conn.commit(); // if needed