Ошибка Java Dateformat - PullRequest
       20

Ошибка Java Dateformat

0 голосов
/ 29 августа 2011

Я использую плагин JDatechooser NetBeans Swing для разработки настольных приложений.По умолчанию его формат даты равен мм / дд / гг, но это не тот формат, который требуется для дБ.Мне нужно преобразовать его в формат гггг-мм-дд.Я пытался с классом SimpleDateformat, и он дает мне следующую ошибку: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '8/29/11' for column 'registered_date' at row 1

Может кто-нибудь дать мне хорошее решение, чтобы сделать это правильно

Спасибо

Ответы [ 2 ]

6 голосов
/ 29 августа 2011

Ваша база данных вообще не требует определенного формата даты - вы не должны вставлять данные в виде строки . Вы должны использовать подготовленное заявление и использовать setDate. В идеале вы должны выполнять как можно меньше строковых преобразований - вам не нужно одно при получении значения из JDateChooser, и вам не нужно при вставке в базу данных:

// Unfortunately you need to convert from java.util.Date to java.sql.Date
statement.setDate(1, new java.sql.Date(chooser.getDate().getTime()));

(Обратите внимание, что вам do потенциально необходимо помнить о часовых поясах, но это другое дело ... вы можете вызвать перегрузку setDate, которая также требует календаря.)

Если вы вставляли (или запрашивали) данные, создавая полный оператор SQL, включая значения, вам следует прекратить это сразу . Вы не только сталкиваетесь с подобными проблемами преобразования, но также открываете себя для атак с использованием SQL-инъекций. Всегда используйте подготовленный оператор и задайте любой параметр в качестве параметров , а не включайте их в SQL.

...