2012-05-19 146 views
4

我得到異常在下面的代碼的第一行類轉換異常與oracle.jdbc.driver.OracleConnection

java.lang.ClassCastException:oracle.jdbc.internal.OracleConnection $$ EnhancerByProxool $$ 3415e85不能轉換爲oracle.jdbc.driver.OracleConnection

我如何將字符串轉換爲oracle.sql.Clob,以及如何使用PreparedStatement插入。

// con is java.sql.Connection object 
oracle.sql.CLOB newClob = oracle.sql.CLOB.createTemporary(con, false, oracle.sql.CLOB.DURATION_SESSION); 

newClob.putString(1,transcript); 
pstmt.setClob(1, newClob); 
pstmt.setString(2, StringUtils.dateToMillis(endTime)); 
pstmt.setString(3, sessionID); 
int count = pstmt.executeUpdate(); 
System.out.println("updated count ::"+count); 
System.out.println("transcript updated...."); 
+1

該問題似乎出現在您包含的代碼片段之前的代碼中。你從哪裏獲得連接?另外,請查看堆棧跟蹤以找到導致問題的確切線路。 –

+0

恰恰我得到第一行異常... –

+0

transcript是一個字符串(由xml數據組成)和endtime是java.util.Date對象和sessionID是字符串)...只有第一行的問題,當我試圖創建clob對象 –

回答

2
Clob clob = connection.createClob(); 
clob.setString(1, transcript); 

或者simly使用的setClob()方法羚牛讀者作爲參數:

pstmt.setClob(1, new StringReader(transcript)); 

無需使用任何數據庫專有類。 JDBC應該是一個與數據庫無關的抽象層。

+0

它返回java.sql.Clob對象...將它作爲CLOB對象存儲到數據庫中 –

+0

Clob是一個接口。 Oracle JDBC連接將返回此接口的Oracle實現。另請參閱我編輯的答案。 –