2013-08-26 59 views
-2

我有一个MySQL数据库,并且想要向其中写入一行。问题是MySQL不喜欢我的query,为什么?这是我的代码将日期输入到MySQL数据库时出现异常

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。这同样适用于suppliersendlist。我想将这些ID写入表格“Bestellung”。变量maxorder是表“Bestellung”的当前ID。

如果你需要它时,例外是:

您的SQL语法错误;检查 对应于你的MySQL服务器版本使用 附近'12正确的语法手册:45:在line 06.164,NULL)” 1

请不要评论/与其他环节的答案,我已经搜索了这个问题并阅读了几个网站。他们不帮我或不适合我的问题。

  • 谢谢大家帮忙
+2

首先,使用'PreparedStatemens'创建并执行您的查询,因为您的方式很容易出现SQL注入。 – svz

+0

你可以发布执行的查询语句吗? - 错过了逃避日期? id是int还是varchar?试试这个:connection.executeQuery(“INSERT INTO Bestellungen(Bestellung_ID,Artikel_ID,Lieferant_ID,Datum,Preis) VALUES(”+ maxorder +“,”+ articlevalue +“,”+ suppliervalue +“,'”+ date +“' , 空值)”); –

+0

@svz你甚至不知道我是否使用它们。我写了一个方法,你不知道我在那里使用什么...... – Gerret

回答

0

尝试改变这一行:

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')"); 
+0

是的,你是正确:)但为什么呢?什么是错误?为什么我必须把“'”? ^^ – Gerret

1

异常是显而易见的,不是吗?

您的SQL语法错误;检查 对应于你的MySQL服务器版本正确的语法 附近'12使用手册:45:06.164,NULL)”在1号线

您没有使用四周日期字段的报价。

但是,您应该真的避免执行这样的SQL查询,并使用PreparedStatemens来达到此目的。

PreparedStatemens有一个像具体方法setDatesetTimesetLongsetString等,你不需要担心把正确的报价在你的代码。

+0

啊,也许这对你来说显而易见,不是因为我多数民众赞成为什么我问这里。并且我发布了这些代码,您无法知道我是否使用PreparedStatement。我写了一个方法,在那里我使用它们...这种方法被称为executeQuery – Gerret

+0

您正在通过操作String调用'executeQuery',并且这将需要您在插入SQL语句中围绕日期值使用引号。 – anubhava

+0

??我现在不明白那个评论。这对我以前的评论没有任何意义。 – Gerret

相关问题