2011-10-26 21 views
0

Jdbcドライバのアップグレード後に次の例外が発生します。OraclePreparedStatementのClasscastException

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 

現在ENV:Weblogicの9.2.1、JDBC

のojdbc5.jarここにいくつかのを助けることができますか?

+0

どのクラスにそれをキャストしようとしている?それが発生するとき?たぶんコードサンプルですか? –

+0

OraclePreparedStatement vStmt = null; OracleResultSet vSet = null; ArrayList vFiles =新しいArrayList (); try { vSqlStr = "ここでいくつかのクエリ"; vStmt =(OraclePreparedStatement)aConn.prepareStatement(vSqlStr); – Yahiya

+0

もあります。 ojdbc5-11.2.0.2.0からojdbc5-11.2.0.3.0にドライバを更新しました – Yahiya

答えて

0

特定のクラス(OraclePreparedStatement)ではなく、PreparedStatementインタフェースに割り当ててください。

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は、準備されたステートメントのファクトリのように機能します。つまり、あなたはこのメソッド呼び出しから返されるオブジェクトの種類を認識していないし、そうでなければならないことを意味しますが、インターフェイスを知っています。

0

これは私がojdbc6でのWeblogic 10.3でやっていることWeblogicの接続から、基礎となるOracle接続オブジェクトを抽出し、その後、あなたはOracle実装へのPreparedStatementのをキャストすることができますされている:あなたはある

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