我正在开发一个 java 程序,用于将 Microsoft access 2010 数据库从一个模式转移到另一个模式。我注意到大约 3% 的记录包含无效日期,这会引发 DateTime 字段溢出异常。
在能够触发 DateTime 字段溢出异常之前,如何为 Date 值编写一个测试,将任何无效日期转换为 null?
下面是触发异常的一行代码示例:
try {ps6.setDate(4, myDate);} catch (SQLException e) {e.printStackTrace();}
这是引发异常的 myDate 变量的无效值的示例:
0151-06-25
这是错误的堆栈跟踪:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Datetime field overflow
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3156)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:215)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(JdbcOdbcPreparedStatement.java:137)
at pic_data.test.MigrateDataTools.migratePICIntakeTable(MigrateDataTools.java:1007)
at pic_data.test.MigrateDataTools.main(MigrateDataTools.java:17)