gpt4 book ai didi

java - WSJDBCConnection 不包装 oracle.jdbc.OracleConnection 类型的对象

转载 作者:行者123 更新时间:2023-11-30 10:53:12 25 4
gpt4 key购买 nike

我看到有人问过类似的问题:

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 类中很奇怪。好吧。

我已经尝试了很多东西,但实际上这段代码应该按原样工作。

现在上面的代码在稍后调用准备好的语句时生成一个空指针,因为 if 语句永远不会触发。我从来没有在那个 if 语句中做到这一点,

然而,当我强制自己展开时,我得到:

java.sql.SQLException: DSRA9122E: com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@35c735c7 没有包装 oracle.jdbc.OracleConnection 类型的任何对象

环境运行的是ojdbc14和JVM 6.0。在 WebSphere 中设置

第一次发帖,所以如果我搞砸了,我提前道歉。

编辑从代码中删除了两个无关紧要的变量

最佳答案

仔细检查您的配置。您的数据源不能像您认为的那样指向 Oracle 数据库。我测试了您的代码,如果您的 DataSource 确实指向 Oracle 数据库,它就会工作。

isWrapperFor() 方法试图告诉您您的连接没有包装 OracleConnection,这也与异常消息告诉您的内容一致。

您可以这样查看数据源产品信息:

DatabaseMetaData metadata = conn.getMetaData();
System.out.println("DB product: " + metadata.getDatabaseProductName());
System.out.println("JDBC Driver: " + metadata.getDriverName());

关于java - WSJDBCConnection 不包装 oracle.jdbc.OracleConnection 类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com