Я хочу вставить нулевое значение в поле DATETIME через PrepareStatement с использованием JDBC (используя базу данных Mysql), я пробовал следующие способы, но ничего не обработано.Вставить null для DATETIME Поле через PrepareStatement с помощью jdbc
у меня есть метод «Util.dateconvertdate» это использовать для преобразования даты ввода в отформатированную строку типа
public static String dateconvertdate(Timestamp timestamp) {
Date date=null;
String formattedDate="";
if(timestamp != null){
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date1 = new java.util.Date(timestamp.getTime());
formattedDate = formatter.format(date1);
}
else return "NULL";
return formattedDate;
}
и я использую, чтобы проверить, является ли вернуть его недействительным или дата
if(Util.dateconvertdate(rs.getTimestamp("fld_dob")) !=null){
pmystmt.setString(17, (Util.dateconvertdate(rs.getTimestamp("fld_dob"))));
} else{
pmystmt.setNull(17, java.sql.Types.NULL);
}
и я пробовал с
pmystmt.setNull(17, java.sql.Types.DATE);
pmystmt.setNull(17, Types.NULL);
pmystmt.setInt(17, Types.NULL);
pmystmt.setString(17, "NULL");
pmystmt.setNull(17, Types.DATE);
pmystmt.setString(17, null);
pmystmt.setDate(17, null);
но ничего не работает, это исключение, как
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: 'NULL' for column 'dob' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2936)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1601)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1710)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2436)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1402)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1694)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1608)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1593)
at com.members.App_users.AddRecords(App_users.java:66)
at com.main.Start.main(Start.java:47)
любая помощь будет оценена по достоинству. Спасибо
Является ли колонка нулевой? Кроме того, если это столбец DATETIME, почему вы используете 'setString()'? –
Какое украшение стола? – tung