2011-10-06 4 views
0

java.sql.PreparedStatement 인터페이스의 특정 구현을 사용하여 문제가 발생할 때까지 commons dbcpPoolingDataSource을 구현했으며 완벽하게 작동했습니다.PoolingDataSource - 드라이버 관련 PreparedStatement 구현을 사용하는 방법

((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()을 사용하고 싶습니다. 나는 또한

에서, PoolingDataSource 날이이 일을 어떻게 든 할 수 있다고 생각하게하는 OracleXADataSource ...

답변

2

DelegatingPreparedStatement의 이름이 있음을 의미한다 포장한다 ... 나는 추기경 규칙 # 1 위반 것을 알고있다 단순히 원래 문장으로 위임합니다. 따라서 delecatingPrepartedStatement.getDelegate()으로 전화하면 OraclePreparedStatement이 반환됩니다.

하지만 실제로는이 작업을 수행하지 마십시오.

+0

감사합니다.이 규칙을 위반하여 죄송합니다. / –

관련 문제