2015-01-15 2 views
0

Я хочу вставить нулевое значение в поле 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) 

любая помощь будет оценена по достоинству. Спасибо

+0

Является ли колонка нулевой? Кроме того, если это столбец DATETIME, почему вы используете 'setString()'? –

+0

Какое украшение стола? – tung

ответ

0

Если столбец таблицы имеет значение NULL, попробуйте его использовать. Это может вам помочь.

pmystmt.setNull(17, java.sql.Types.TIMESTAMP); 
0

В вашей базе данных url include zeroDateTimeBehavior=convertToNull при установке источника данных.

jdbc:mysql://ip_address:port/databasename?zeroDateTimeBehavior=convertToNull 
Смежные вопросы