我在使用 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;
}