Java OraclePreparedStatement的ClasscastException
在Jdbc驱动程序升级之后,我遇到了以下异常Java OraclePreparedStatement的ClasscastException,java,weblogic9.x,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
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
当前环境:Weblogic 9.2.1,JDBC ojdbc5.jar
这里有什么帮助吗?请将其分配给接口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的作用类似于准备好的语句的工厂。这意味着您不知道,也不应该知道,此方法调用返回了哪种类型的对象,但您知道接口。这是我在Weblogic 10.3中使用ojdbc6所做的,从Weblogic连接中提取底层Oracle连接对象,然后,您可以将PreparedStatement强制转换为Oracle实现:
oracle.jdbc.OracleConnection oracleConn = ((weblogic.jdbc.extensions.WLConnection) ret).getVendorConnection();
OraclePreparedStatement ps = (OraclePreparedStatement) conn.prepareStatement("select * from ..."));
你想把它投给哪个班级?什么时候发生的?可能是代码示例?OraclePreparedStatement vStmt=null;OracleResultSet vSet=null;ArrayList vFiles=新的ArrayList;尝试{vSqlStr=some query here;vStmt=oraclepresparedstatement acon.prepareStatementvSqlStr;另外。我们已经将驱动程序从ojdbc5-11.2.0.2.0更新为ojdbc5-11.2.0.3.0。您不能这样做,因为您可能正在使用容器Weblogic在本例中提供的数据源机制,该机制封装了JDBC对象,例如连接、语句等转换到其自身的包装中,这些包装不能“强制转换”到OraclePreparedStatement中。请更详细地描述您正在尝试执行的操作,我们可能会建议其他方法。从异常情况可以看出,您从WebLogic获得了prepared语句的存根实现容器,我假设OraclePreparedStatement在其中的某个位置。请尝试在WebLogin文档中查找如何检索包装的stmt。其他解决方案是不使用WebLogic连接容器。