我看到一个类似的问题:
Issue while creating Oracle ARRAY Type in java using ArrayDescriptor
但是我的问题是团队中的其他程序员使用相同的代码,显然它对他们来说很好。
Connection conn = null;
Connection oracleConn = null;
CallableStatement stmt = null;
try {
conn = this.getDataSource().getConnection();
if ( conn.isWrapperFor(oracle.jdbc.OracleConnection.class)) {
oracleConn = conn.unwrap(oracle.jdbc.OracleConnection.class);
}
我没有开发这个代码,我发现他们将OracleConnection展开到常规的Connection类中很奇怪。 Bawwwt。
我已尝试过一大堆东西,但实际上这段代码应该按原样运行。
现在上面的代码稍后在调用预准备语句时生成空指针,因为if语句永远不会触发。我从来没有在if语句中加入,
然而,当我强迫自己做一个解缠时,我得到了:
java.sql.SQLException:DSRA9122E:com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@35c735c7不包装oracle.jdbc.OracleConnection类型的任何对象
环境正在运行ojdbc14和JVM 6.0。在WebSphere中安装
第一次发布海报,所以如果我搞砸了,我会提前道歉。
修改从不重要的代码中删除了两个变量
答案 0 :(得分:0)
仔细检查您的配置。您的DataSource不能像您认为的那样指向Oracle DB。我测试了您的代码,如果您的DataSource真正指向Oracle数据库,它将会起作用。
isWrapperFor()
方法试图告诉您Connection没有包装OracleConnection,这也与异常消息告诉您的内容一致。
您可以检查数据源产品信息,如下所示:
DatabaseMetaData metadata = conn.getMetaData();
System.out.println("DB product: " + metadata.getDatabaseProductName());
System.out.println("JDBC Driver: " + metadata.getDriverName());