ClassCastException:无法将java.sql.Date(id = 9010)强制转换为java.sql.Timestamp

时间:2014-12-18 15:24:00

标签: java date classcastexception sqldatetime sql-timestamp

我遇到了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;
    }

0 个答案:

没有答案