0

我在使用 Java 1.4 应用程序时遇到问题。

我正在执行一个 JDBC Qyery——它是 Oracle 数据库中的 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: Cannot cast java.sql.Date (id=9010) to 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;
    }
4

0 回答 0