OraclePreparedStatement的ClasscastException

时间:2011-10-26 09:17:51

标签: java weblogic9.x

我在Jdbc驱动程序升级后遇到以下异常。

Caused by: java.lang.ClassCastException: weblogic.jdbc.rmi.SerialPreparedStatement_weblogic_jdbc_rmi_internal_PreparedStatementStub_weblogic_jdbc_rmi_internal_PreparedStatementImpl_weblogic_jdbc_wrapper_PreparedStatement_oracle_jdbc_driver_OraclePreparedStatementWrapper_921_WLStub

Current Env:Weblogic 9.2.1,JDBC ojdbc5.jar

可以在这方面提供帮助吗?

2 个答案:

答案 0 :(得分:0)

请将其分配给PreparedStatement接口,而不是特定的类(OraclePreparedStatement)。

PreparedStatement vStmt = null; 
OracleResultSet vSet = null; 
ArrayList<ResourceFile> vFiles = new ArrayList<ResourceFile>(); 
try { 
   vSqlStr = "some query here"; 
   vStmt = aConn.prepareStatement(vSqlStr)
} catch (Exception e) {
...

connection.prepareStatement就像准备好的语句的工厂一样。这意味着你不知道,也不应该知道从这个方法调用返回哪种对象,但你知道接口。

答案 1 :(得分:0)

这是我在Weblogic 10.3中所做的,ojdbc6是从Weblogic Connection中提取底层Oracle连接对象,然后您可以将PreparedStatement转换为Oracle实现:

oracle.jdbc.OracleConnection oracleConn = ((weblogic.jdbc.extensions.WLConnection) ret).getVendorConnection();
OraclePreparedStatement ps = (OraclePreparedStatement) conn.prepareStatement("select * from ..."));