如何使用java从Oracle中恢复CLOB值

SELECT DESCRIPTION,DETAILED_DESCRIPTION,PRIORITY,RISK_LEVE FROM Table_Name 

DETAILED_DESCRIPTION列在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 record=new ArrayList(); 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; 

检索数据后,可以使用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

这可能对你有帮助,

  // 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