CLOB到字符串的转换+;java 1.8

CLOB到字符串的转换+;java 1.8,java,Java,下面的程序总是给出异常 “final Reader=clb.getCharacterStream();”这一行中的“java.sql.SQLRecoverableException:Closed Connection” 您可能在调用clobStringConversion()之前关闭了连接。在读取Clob后尝试关闭连接。您应该提供更多详细信息,如数据库、正在使用的JDBC驱动程序、Clob的预期长度、是间歇发生还是每次发生。当前使用Oracle数据库和JDBC驱动程序。CLOB长度非常大。如果希

下面的程序总是给出异常

“final Reader=clb.getCharacterStream();”这一行中的“java.sql.SQLRecoverableException:Closed Connection”


您可能在调用
clobStringConversion()
之前关闭了连接。在读取Clob后尝试关闭连接。

您应该提供更多详细信息,如数据库、正在使用的JDBC驱动程序、Clob的预期长度、是间歇发生还是每次发生。当前使用Oracle数据库和JDBC驱动程序。CLOB长度非常大。如果希望得到帮助,需要提供更多代码。此错误消息表示此时套接字连接已关闭;无法从封闭流中读取数据。我们在这里无能为力。请确认是否每次尝试阅读时都会发生这种情况,或者只是偶尔发生。当JDBC连接关闭时,这意味着您可以同时运行其他查询,而不能读取CLOB数据。若您不能运行其他查询,那个么这意味着JDBC连接已经按照@MattClark的建议关闭。在这种情况下,您必须增加数据库的超时持续时间。这种情况每次都会发生。目前正在使用spring boot应用程序,不确定哪里需要增加数据库连接的持续时间。我从数据库中获取对象列表,然后循环列表并转换返回类型为clob的特定变量。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.sql.Clob;
import java.sql.SQLException;

public class ClobStringConversion {

    public static String clobStringConversion(Clob clb) throws IOException, SQLException
    {
        if (clb == null)
              return  "";

               StringBuffer sb = new StringBuffer();
               String strng;

               try{
                   final Reader reader = clb.getCharacterStream();
                   final BufferedReader br     = new BufferedReader(reader);

                   int b;
                   while(-1 != (b = br.read()))
                   {
                       sb.append((char)b);
                   }
                   br.close();
               }

               catch (SQLException e)
               {
                   //log.error("SQL. Could not convert CLOB to string",e);
                   return e.toString();
               }
               catch (IOException e)
               {
                   //log.error("IO. Could not convert CLOB to string",e);
                   return e.toString();
               }
               return sb.toString();
    }     

}