gpt4 book ai didi

java - 尽管我生成的查询工作正常,但为什么 JDBC-MySQL 会在 SQL 语法中抛出错误?

转载 作者:行者123 更新时间:2023-11-29 06:37:13 25 4
gpt4 key购买 nike

我一直在从事的项目中有很多类似的代码块。

    DBConnector db = new DBConnector();
Connection conn = db.connect();
String insertQuery = "INSERT INTO track_item_result (tirTrackItemId, tirNodeId, tirDetailId, tirResultString, tirResultValue, tirStatus) " + "VALUES (?,?,?,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(insertQuery, Statement.RETURN_GENERATED_KEYS);
pstmt.setInt(1, this.trackItem.getId());
pstmt.setInt(2, this.node.getId());
pstmt.setInt(3, this.tirDetailId);
pstmt.setString(4, this.tirResultString);
pstmt.setString(5, this.tirResultValue);
pstmt.setString(6, this.tirStatus);
System.out.println(pstmt.toString());
pstmt.executeUpdate(insertQuery);

ResultSet generatedKeys = pstmt.getGeneratedKeys();

我在上面代码的最后 3 行中打印了查询,这是一个格式良好的 SQL 语句。

com.mysql.cj.jdbc.ClientPreparedStatement: INSERT INTO track_item_result (tirTrackItemId, tirNodeId, tirDetailId, tirResultString, tirResultValue, tirStatus) VALUES (3,15,0,'<EOL><EOL><EOL><EOL>','-1','F')

如果我直接将生成的查询复制粘贴到 MySQL 客户端上,它似乎工作正常。但在项目中它抛出了可怕的SQL语法错误

java.sql.SQLSyntaxErrorException: 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 '?,?,?,?,?,?)' at line 1
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1393)
at com.mysql.cj.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2353)
at com.mysql.cj.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1303)
at com.example.myproject.models.TrackItemResult.insertInDb(TrackItemResult.java:98)
at com.example.myproject.healthcheck.TrackItemRunnable.run(TrackItemRunnable.java:86)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)

此处 TrackItemResult.insertInDb(TrackItemResult.java:98) 行是 pstmt.executeUpdate() 行。

我无法理解这种行为。该查询看起来很正常并且实际上有效。根据架构,值的格式正确。还有什么可能导致此情况?

最佳答案

尝试使用 pstmt.executeUpdate(); 而不是 pstmt.executeUpdate(insertQuery);

关于java - 尽管我生成的查询工作正常,但为什么 JDBC-MySQL 会在 SQL 语法中抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53258750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com