gpt4 book ai didi

java - PoolingDataSource - 如何使用特定于驱动程序的PreparedStatement实现

转载 作者:行者123 更新时间:2023-12-02 08:09:24 25 4
gpt4 key购买 nike

我已经实现了 commons dbcp PoolingDataSource 及其工作完美 - 直到我遇到使用 java.sql.PreparedStatement 接口(interface)的特定实现的问题。

((OraclePreparedStatement) getStatement()).registerReturnParameter(index, sqlType); 

java.lang.ClassCastException:
org.apache.commons.dbcp.DelegatingPreparedStatement
cannot be cast to oracle.jdbc.OraclePreparedStatemen

我明白为什么会发生这种情况。 有没有办法使用供应商特定的PreparedStatement实现,但仍然能够使用Commons DBCP提供的连接池?我想使用registerReturnParameter()和getReturnResultSet()这是特定于 Oracle 的实现的。我知道我违反了第一条基本规则...

此外,PoolingDataSource 正在包装 OracleXADataSource,这让我相信以某种方式可以做到这一点......

最佳答案

DelegatingPreparedStatement 的名称意味着它只是委托(delegate)给原始语句。因此,您调用 deecatingPrepartedStatement.getDelegate() ,它将返回 OraclePreparedStatement

但实际上,尽量不要这样做。

关于java - PoolingDataSource - 如何使用特定于驱动程序的PreparedStatement实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7680273/

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