Java 再次=>&引用;您的SQL语法有错误;检查与您的MariaDB服务器对应的手册&引用;

Java 再次=>&引用;您的SQL语法有错误;检查与您的MariaDB服务器对应的手册&引用;,java,mysql,sql,Java,Mysql,Sql,代码截图 首先,这是我在这里的第一篇帖子,我对编程非常陌生,所以,如果我问一些愚蠢的问题,我的帖子会遗漏一些信息。请告诉我 在试图更改SQL数据库中的字段时,出现上述失败消息。我检查了其他几个有类似问题的帖子,但它们都有不同的原因,在我看来,我的问题还有另一个。 所附的屏幕截图显示了一种有效的方法和一种导致问题的方法。就我个人而言,我无法弄清楚问题是什么 完整的故障消息是: Fehlermeldung: You have an error in your SQL syntax; che

代码截图

首先,这是我在这里的第一篇帖子,我对编程非常陌生,所以,如果我问一些愚蠢的问题,我的帖子会遗漏一些信息。请告诉我

在试图更改SQL数据库中的字段时,出现上述失败消息。我检查了其他几个有类似问题的帖子,但它们都有不同的原因,在我看来,我的问题还有另一个。 所附的屏幕截图显示了一种有效的方法和一种导致问题的方法。就我个人而言,我无法弄清楚问题是什么

完整的故障消息是:

    Fehlermeldung: 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 'taskID =79' at line 1
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 'taskID =79' at line 1
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    at com.mysql.jdbc.Util.getInstance(Util.java:408)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3933)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1912)
    at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1251)
    at databaseConnection.TaskDAOimplDB.updateTask(TaskDAOimplDB.java:110)
    at procedure.Procedure.main(Procedure.java:36)
]

这不是应该如何使用的。关键是替换SQL中的
字符-这还处理字符串内部的空格,否则可能导致SQL itslef无效。我也建议使用。哪一个更适合这种查询

执行此PreparedStatement对象中的SQL语句,该语句必须是SQL数据操作语言(DML)语句,例如
INSERT
UPDATE
DELETE
;或不返回任何内容的SQL语句,例如DDL语句


在updateTask语句中“UPDATE Tasks SET dueDate=”的结尾和“WHERE taskID=”的开头添加一个空格。也不要使用字符串连接生成SQL查询。是否尝试将TaskDAOimplDB.java的第110行更改为pstmt.executeUpdate()?感谢您的快速回复。我走上台阶。现在,失败消息更改为“字段列表”中的“未知列‘March2999’”(其中March2999是我作为参数传递的值)。更改为executeUpdate()对我所看到的内容没有任何影响。请不要发布包含图像的代码,复制您的代码并将其粘贴到您的问题中。请在提出下一个问题之前阅读本节->
String sql = "UPDATE Tasks SET dueDate=? WHERE taskID=?";

try (Connection conn = DriverManager.getConnection(...);
    PreparedStatement stm = conn.createStatement(sql);) 
{
    // Don't forget the `parameterIndex` starts with `1` unlike arrays or lists
    stm.setString(1, dueDate);
    stm.setInt(2, taskID);
    stm.executeUpdate();

    System.out.println("Updated");

} catch (SQLException e) {
    ...
}