【问题标题】:ClasscastException for OraclePreparedStatementOraclePreparedStatement 的 ClasscastException
【发布时间】:2011-10-26 09:17:51
【问题描述】:

我在 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

这里可以帮忙吗?

【问题讨论】:

  • 你想把它投射到哪个班级?什么时候发生?也许是代码示例?
  • OraclePreparedStatement vStmt = null; OracleResultSet vSet = null; ArrayList vFiles = new ArrayList();尝试 { vSqlStr = "这里有一些查询"; vStmt = (OraclePreparedStatement) aConn.prepareStatement(vSqlStr);
  • 也。我们已将驱动程序从 ojdbc5-11.2.0.2.0 更新为 ojdbc5-11.2.0.3.0
  • 您不能这样做,因为您可能正在使用您的容器(在本例中为 Weblogic)提供的数据源机制,该机制将 JDBC 对象(如连接、语句等)包装到自己的包装器中,这些包装器不是 ' castable' 转换为OraclePreparedStatement。请更详细地描述您正在尝试做的事情,我们可能会建议替代方法。
  • 从异常中可以看出,您从 WebLogic 容器中获得了准备好的语句的存根实现,我假设 OraclePreparedStatement 位于其中的某个位置。尝试在 WebLogin 文档中查找如何检索包装的 stmt。其他解决方案是不使用 WebLogic Connection 容器。

标签: java weblogic9.x


【解决方案1】:

请将其分配给接口 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 就像您准备好的语句的工厂。这意味着您不知道也不应该知道从该方法调用返回哪种对象,但您知道接口。

【讨论】:

    【解决方案2】:

    这是我在 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 ..."));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2019-04-18
      • 1970-01-01
      • 2013-02-10
      • 2021-12-05
      • 2012-02-08
      相关资源
      最近更新 更多