2012-03-26 1 views
1

Для этого Java кода:Что не так с попыткой вставить этот dateTime из моего Java-приложения?

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 является reserved keyword в mysql. используйте обратные выходы (`) вокруг него.

Как показано ниже:

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

Даже когда вы фиксируете зарезервированное ключевое слово table вопрос, он все равно не будет работать. Вы пытаетесь вставить поле date.toString() в поле даты. (при объединении toString() получает все нестроковые объекты)

Вместо этого вы должны использовать PreparedStatement и позвонить по телефону stm.setDate(..). Узнайте больше о подготовленном заявлении, поскольку чаще всего это лучший путь. (он также имеет addBatch(), который работает несколько иначе - вы устанавливаете все параметры, затем добавляете, а затем снова устанавливаете.