Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OraclePreparedStatement的ClasscastException_Java_Weblogic9.x - Fatal编程技术网

Java OraclePreparedStatement的ClasscastException

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

在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
当前环境: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连接容器。