2012-03-26 27 views
1

對於這個Java代碼:試圖從我的Java應用程序中插入此dateTime有什麼問題?

stmt.addBatch(
       "INSERT INTO Bills (BillDateTime, Table, Item, NoAttended, Service, Payment, Total) " + 
       "VALUES('" + billDateTime + "', " + Integer.parseInt(createTableNumberOutput.toString()) + ", '" + null + "', '" 
       + Integer.parseInt(createGuestNumberOutput.toString()) + "', " + "5" + ", '" + 
       createPaymentTypeOutput.toString() + "', '" + "')"); 

我收到以下錯誤:

java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Table, Item, NoAttended, Service, Payment, Total) VALUES('2012-03-26 11:15:8', 1' at line 1 

的問題是看不出來的我,像MySQL要求的格式「YYYY-MM-DD HH:MM: SS'爲dateTime,我有,對不對?

回答

3

Table是在mysql中的reserved keyword。在它周圍使用反引號(`)。

象下面這樣:

stmt.addBatch("INSERT INTO Bills (BillDateTime,`Table`, Item,NoAttended,Service,Payment,Total..........") 
2

即使您修復保留的關鍵字table問題,它仍然是行不通的。您正在嘗試插入日期字段中的date.toString()。 (當連接時,toString()被稱爲所有非字符串對象)

相反,您應該使用PreparedStatement並致電stm.setDate(..)。更熟悉準備好的陳述,因爲它往往是更好的方法。 (它也有addBatch(),它以稍微不同的方式工作 - 設置所有參數,然後添加,然後再次設置。

相關問題