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

use*_*624 6 java

SELECT DESCRIPTION,DETAILED_DESCRIPTION,PRIORITY,RISK_LEVE FROM Table_Name
Run Code Online (Sandbox Code Playgroud)

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<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;   
Run Code Online (Sandbox Code Playgroud)

Sca*_*bat 18

检索数据后,可以使用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());
Run Code Online (Sandbox Code Playgroud)

请参阅http://www.java2s.com/Code/JavaAPI/java.sql/ResultSetgetClobintcolumnIndex.htm