gpt4 book ai didi

java - 如何解决 JDBC preparedStatement 中的 MySQLSyntaxErrorException

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

<分区>

我有一个抛出 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 的查询,我不知道为什么。我正在使用 xampp,当我直接尝试相同的查询时,它工作正常。我还有一大堆其他方法,它们使用非常相似的查询,但都有效。问题似乎与更新日期有关,我在错误消息中注意到 java 在日期周围放置了 ' ',这使它成为一个字符串并且可能是错误的原因。但是我不确定如何解决此问题以将日期作为日期插入。

代码如下:

public void update(int userId, String date, String column, String value){
try {
// convert date from String to Date
DateTime dt = DateTime.parse(date);
java.sql.Date sqlDate = new java.sql.Date(dt.getMillis());
// create prepared statement
conn = DriverManager.getConnection("jdbc:mysql://localhost/db","root", "");
String query = "UPDATE expenses_income SET ? = ? WHERE userId = ? AND date = CAST(? AS DATETIME);";
PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setString(1, column);
preparedStmt.setString(2, value);
preparedStmt.setInt(3, userId);
preparedStmt.setDate(4, sqlDate);
preparedStmt.executeUpdate();

conn.close();
} catch (Exception e) {
System.err.println("MySQL exception: " + e);
}
}

错误信息:

MySQL exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''comment' = '123' WHERE userId = 1 AND date = CAST('2018-01-06' AS DATETIME)' at line 1

我还尝试了不强制转换为日期时间的查询:

String query = "UPDATE expenses_income SET ? = ? WHERE userId = ? AND date = ?;";

但是我得到了同样的错误。然后我尝试使用 java.util.Date 而不是 Joda DateTime,但它没有帮助。有什么想法吗?

谢谢!

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