我遇到了Java 1.4应用程序的问题。
我正在执行JDBC Qyery - 这是Oracle数据库中的2个日期字段(我正在阅读的2个字段的类型为DATE,NULLABLE = false)
SELECT effFrom, effTo FROM myTable WHERE ....
并且有一个JDBCConnection
Object[][] result = JDBCConnection.getSqlObjectArray(query, bindVals);
我在结果中获取数据并循环显示
for (int i = 0; i < result.length; i++) {
java.sql.Timestamp effFrom = (java.sql.Timestamp ) result[i][0];
java.sql.Timestamp effTo = (java.sql.Timestamp ) result[i][1];
但它无法将对象转换为java.sql.Timestamp,错误为 ClassCastException:无法将java.sql.Date(id = 9010)强制转换为java.sql.Timestamp
(java.sql.Timestamp ) result[i][0]
所以我将转换改为
java.sql.Date effFrom = (java.sql.Date) result[i][0];
它正在发挥作用。一切都很完美。
但问题是我的代码没有改变,而且数据在过去6个月内至少没有变化。
它确实适用于昨天的时间戳转换,今天它没有使用时间戳,而是使用日期。
然后我回到源代码仓库,看到它原来是java.sql.Date大约2年前,现在我基本上回滚了它。很明显,我在这里缺少一些东西。
JDBC查询是否有可能错误地解释数据类型?
根据Rudi的问题,JDBCConnection.getSqlObjectArray()中的内容是什么
它有一个名为dao的JdbcDaoSupport类
public static Object[][] getSqlObjectArray(String sql, String bind1, String bind2, String bind3) {
Object[][] a = dao.getSqlObjectArrayImpl(sql, bind1, bind2, bind3);
return a;
}