Ошибка Java Dateformat

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

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

Спасибо

2 ответа

Решение

Ваша база данных вообще не требует определенного формата даты - вы не должны вставлять данные в виде строки. Вы должны использовать подготовленное заявление и использовать 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()));

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

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

Другие вопросы по тегам