Java 在MySQL数据库中输入日期时发生异常

Java 在MySQL数据库中输入日期时发生异常,java,mysql,date,Java,Mysql,Date,我有一个MySQL数据库,想在其中写入一行。问题是MySQL不喜欢我的query,为什么?这是我的代码: java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date().getTime()); for (Integer articlevalue : articlesendlist) { for (Integer suppliervalue : suppliersendlist) { connec

我有一个
MySQL
数据库,想在其中写入一行。问题是
MySQL
不喜欢我的
query
,为什么?这是我的代码

java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date().getTime());

for (Integer articlevalue : articlesendlist) {
    for (Integer suppliervalue : suppliersendlist) {
        connection.executeQuery("INSERT INTO Bestellungen(Bestellung_ID, Artikel_ID, Lieferant_ID, Datum, Preis) VALUES (" + maxorder + ", " + articlevalue + ", " + suppliervalue + ", " +  date + ", NULL)");
    }
}
我的代码的一个小说明。
articlesendlist
包含来自
JTabel
的选定值的ID。这同样适用于
供应商发送列表
。我想将ID写入表“
Bestellung
”。变量
maxorder
是表“
Bestellung
”的当前ID

如果您需要它,例外情况是:

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行的“12:45:06.164,空)”附近

请不要用其他链接评论/回答,我已经搜索了这个问题并阅读了几个网站。它们不能帮助我或不适合我的问题

  • 谢谢你的帮助

尝试更改此行:

connection.executeQuery("INSERT INTO Bestellungen(Bestellung_ID, Artikel_ID, Lieferant_ID, Datum, Preis) VALUES (" + maxorder + ", " + articlevalue + ", " + suppliervalue + ", " +  date + ", NULL)");
为此:

connection.executeQuery("INSERT INTO Bestellungen(Bestellung_ID, Artikel_ID, Lieferant_ID, Datum, Preis) VALUES ('" + maxorder + "','" + articlevalue + "','" + suppliervalue + "','" +  date + "','NULL')");

例外是显而易见的,不是吗

您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在第1行的“12:45:06.164,空)”附近

您没有在日期字段周围使用引号

但是,您确实应该避免像这样执行SQL查询,并将其用于此目的


PreparedStatemens
有一些特定的方法,如
setDate
setTime
setLong
setString
等,您不必担心在代码中加上正确的引号。

首先,使用
PreparedStatemens
来创建和执行查询,因为您的方式易于SQL注入。您可以发布执行的查询语句吗?-错过了逃避约会?id是int还是varchar?试试这个:connection.executeQuery(“插入到Bestellungen(Bestellung_ID,Artikel_ID,Lieferant_ID,Datum,Preis)值(“+maxorder+”,“+articlevalue+”,“+suppliervalue+”,“+date+”,NULL)”)@svz你甚至不知道我是否使用它们。我给自己写了一个方法,你不知道我在那里用的是什么……请投票人解释一下好吗?@Gerret,我知道你没有使用
PreparedStatement
,因为你使用
String
串联来构建你的查询。是的,你是对的:)但为什么呢?出了什么错?为什么我要加“?”^^嗯,也许这对你来说是显而易见的,对我来说不是。这就是我为什么在这里问的原因。根据我发布的代码,您无法知道我是否使用PreparedStatement。我写了一个方法,在那里我使用它们。。。此方法称为executeQuery您通过操纵字符串调用
executeQuery
,这将要求您在insert SQL语句中对日期值使用引号。??我现在不明白那句话。这对我的previus评论毫无意义。公认的答案也在做同样的事情,即在插入的值周围加引号。。。。是的,我知道这就是我接受它的原因。但是它并没有改变你的评论中的一些内容,但是ok