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