2013-10-21 18 views
3
SELECT DESCRIPTION,DETAILED_DESCRIPTION,PRIORITY,RISK_LEVE FROM Table_Name 

DETAILED_DESCRIPTION列有值以檢索在CLOB如何使用Java

下面Oracle的CLOB值的代碼來獲取數據:但我得到的錯誤「錯誤:讀取錯誤「一邊看場 」DETAILED_DESCRIPTION「

Statement statement; 

ResultSet resultSet; 

oracleCon.setAutoCommit(false); 

statement = oracleCon.createStatement(); 

String chdet[] = new String[8]; 
String query="SELECT DESCRIPTION,DETAILED_DESCRIPTION,PRIORITY,RISK_LEVEL FROM Table_Name"; 

        resultSet = statement.executeQuery(query); 
        ArrayList<String> record=new ArrayList<String>();    

        while (resultSet.next()) 
        { 
        record.add(resultSet.getString("DESCRIPTION"));     
        record.add(resultSet.getString("DETAILED_DESCRIPTION")); 
        record.add(resultSet.getString("PRIORITY")); 
        record.add(resultSet.getString("RISK_LEVEL"));    
        }     
        if(record.size()>0)    
        { 
         chdet[0] = record.get(0); 
         chdet[1] = record.get(1); 
         chdet[2] = record.get(2); 
         chdet[3] = record.get(3); 
         break;       
        }        
       } 
      return chdet; 
+0

看一看的ResultSet .getClob here http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSet.html#getClob(java.lang.String) – Satya

+0

什麼是您的驅動程序vers離子?它通常在jar文件中的MANIFEST.MF內(文件名中的數字是**而不是驅動程序版本)。對於在CLOB上使用'getString()'的最新驅動程序(11.x)應該可以正常工作。 –

回答

15

檢索完數據後,可以使用getClob()方法返回Clob。然後你需要打開Clob的流來讀取數據(Mayb可以是char或二進制數據)。

如果知道的CLOB是一個簡單的字符串,你也許還希望使用

clob.getSubString(1, (int) clob.length());

那麼試試這個

Clob clob = resultSet.getClob("DETAILED_DESCRIPTION") 
record.add(clob.getSubString(1, (int) clob.length()); 

看到http://www.java2s.com/Code/JavaAPI/java.sql/ResultSetgetClobintcolumnIndex.htm

+0

我試圖使用getClob()方法作爲record.add(resultSet.getString(「DETAILED_DESCRIPTION」));但我看到錯誤「的方法添加(字符串)類型ArrayList 不適用於參數(Clob)」 – user1882624

+0

更新我的答案爲你 –

0

這可以幫助你,

// Select LOB locator into standard result set. 
ResultSet rs = 
    stmt.executeQuery ("SELECT blob_col, clob_col FROM lob_table"); 
while (rs.next()) 
{ 
    // Get LOB locators into Java wrapper classes. 
    java.sql.Blob blob = rs.getBlob(1); 
    java.sql.Clob clob = rs.getClob(2); 

} 

參考下面的鏈接瞭解更多詳情, http://docs.oracle.com/cd/A84870_01/doc/java.816/a81354/oralob2.htm

+0

ResultSet有getClob()方法,爲什麼不使用它? –

+0

非常感謝您糾正錯誤,我已經更新了代碼。 –

+0

我試圖使用getClob()方法作爲record.add(resultSet.getString(「DETAILED_DESCRIPTION」));但我可能看到錯誤「方法添加(字符串)類型ArrayList 不適用於參數(Clob)」 – user1882624