Java PooligDataSource-如何使用特定于驱动程序的PreparedStatement实现
我已经实现了Java PooligDataSource-如何使用特定于驱动程序的PreparedStatement实现,java,jdbc,apache-commons-dbcp,Java,Jdbc,Apache Commons Dbcp,我已经实现了PoolgDataSource并且它工作得很好——直到我遇到了使用java.sql.PreparedStatement接口的具体实现的问题 ((OraclePreparedStatement) getStatement()).registerReturnParameter(index, sqlType); java.lang.ClassCastException: org.apache.commons.dbcp.DelegatingPreparedStatement cann
PoolgDataSource
并且它工作得很好——直到我遇到了使用java.sql.PreparedStatement
接口的具体实现的问题
((OraclePreparedStatement) getStatement()).registerReturnParameter(index, sqlType);
java.lang.ClassCastException:
org.apache.commons.dbcp.DelegatingPreparedStatement
cannot be cast to oracle.jdbc.OraclePreparedStatemen
我明白为什么会这样有没有办法使用特定于供应商的PreparedStatement实现,但仍然能够使用Commons DBCP提供的连接池?我想使用特定于Oracle实现的registerReturnParameter()和getReturnResultSet()。我知道我违反了基本规则#1
此外,PoolgDataSource正在包装一个OracleXADataSource,这让我相信它在某种程度上是有可能做到这一点的。DelegatingPreparedStatement的名称意味着它只是委托给原始语句。因此,您调用
delegatingpreparedstatement.getDelegate()
,它将返回OraclePreparedStatement
但事实上,请不要这样做。感谢并抱歉违反了这一条的规定:/