Ваш пример кода, как представляется, не так, и это может быть просто опечатка, но так как вы не представили никакой другой информации в отношении ошибки, это все, что мы должны перейти на ...
Вы создать PreapredStatement
называется stmt
, но затем использовать statement
для execute
запроса.
Вы должны использовать ту же переменную/экземпляр для связывания и excute запроса. Вероятно, вы также должны использовать executeUpdate
вместо execute
, это предоставляет дополнительную информацию, когда оператор выполняется о количестве строк, на которые повлияло обновление.
try {
PreparedStatement stm= (PreparedStatement) con.prepareStatement("INSERT INTO d (dateEntré) VALUES(?)");
stm.setDate(1,convertUtilDateToSqlDate(dateChooser.getDate()));
int rows = statement.executeUpdate();
if (rows > 0) { // Should be 1
JOptionPane.showMessageDialog(null,"added");
} else {
JOptionPane.showMessageDialog(null,"Update failed for unknown reason");
}
} catch (Exception e1) {
JOptionPane.showMessageDialog(null,e1.getMessage());
e1.printStackTrace();
}
Это, конечно, предполагает, что столбец базы данных является совместимым типом java.sql.Date
Присмотритесь на JDBC Database Access и Using Prepared Statements для получения более подробной информации.
В чем проблема? Вызывается ли исключение? Если да, отправьте трассировку стека. И почему два утверждения ('statement' и' stm')? И почему 'executeQuery' на INSERT? – copeg
Является ли тип столбца в базе данных совместимым с java.sql.Date? – MadProgrammer
Что такое '' stmt'? Вы используете 'statement', когда вы готовите оператор и выполняете запрос, но привязываете значение к' stmt'? – MadProgrammer