Что не так с попыткой вставить этот dateTime из моего Java-приложения? - PullRequest
1 голос
/ 27 марта 2012

Для этого кода 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-ДД ЧЧ: ММ: СС 'для dateTime, который у меня есть, верно?

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

Table - это зарезервированное ключевое слово в mysql.используйте галочки ( `) вокруг него.

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

stmt.addBatch("INSERT INTO Bills (BillDateTime,`Table`, Item,NoAttended,Service,Payment,Total..........")
2 голосов
/ 27 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...