-2

我有一个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包含来自 a 中选定值的ID JTabel。这同样适用于suppliersendlist. 我想将 ID 写入表“ Bestellung”。变量maxorder是表“ Bestellung”的当前 ID。

如果你需要它,例外是:

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

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

  • 谢谢你的帮助
4

2 回答 2

1

例外很明显不是吗。

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

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

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

PreparedStatemens具有特定的方法,例如, ,setDatesetTime,您无需担心在代码中添加正确的引号。setLongsetString

于 2013-08-26T10:59:44.280 回答
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')");
于 2013-08-26T10:56:17.343 回答