Я работаю над приложением Java (GUI, JDBC, MySQL) и у меня есть проблема, которую я не могу решить.
Когда я вставляю данные в БД MySQL (есть этот тип данных String, INT, Дата), нет проблем, если некоторые поля пусты.Это пустое поле получает Null в БД.Но когда я хочу обновить какую-то строку, все поля даты должны быть заполнены, или это ошибка:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: 'null' for column 'rociste_datum' at row 1
rociste_datum
- это первый столбец даты в БД
Есть частикод:
код для метода вставки
public void insertPredmetDB(String prezime, String ime, int nasBroj, Date datumRocista) {
if (datumRocista == null || datumRocista.equals("")) {
datumRocistaDB = null;
} else {
String datumRocistaSt = new SimpleDateFormat("yyyy-MM-dd").format(datumRocista);
datumRocistaDB = java.sql.Date.valueOf(datumRocistaSt);
}
код для метода обновления
public void updatePredmetDB(int idNovo, String novoPrezime, String novoIme, int noviNasBroj, Date noviRocisteDatum) {
if (noviRocisteDatum == null || noviRocisteDatum.equals("")) {
noviRocisteDatumDB = null;
} else {
String datumRocistaSt = new SimpleDateFormat("yyyy-MM-dd").format(noviRocisteDatum);
noviRocisteDatumDB = java.sql.Date.valueOf(datumRocistaSt);
}
String izmena = "UPDATE predmeti SET prezime='" + novoPrezime + "', ime='" + novoIme + "', nas_broj='" + noviNasBroj + "', rociste_datum='" + noviRocisteDatumDB + "'where id='" + idNovo + "'";
try {
PreparedStatement ps = con.prepareStatement(izmena);
ps.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Для всех этих дат существуют операторы if else, и эти объекты передаютсячерез контроллер с одноэлементным рисунком.Я думаю, что нет необходимости помещать этот код здесь, потому что нет ошибок, и все работает отлично, кроме этих дат.
Я думаю, что есть проблема с преобразованием даты.Не могли бы вы мне помочь?