Наиболее эффективное решение для чтения CLOB в String и String в CLOB в Java? - PullRequest
39 голосов
/ 31 января 2010

У меня есть большой CLOB (более 32 КБ), который я хочу прочитать в строку, используя StringBuilder. Как мне сделать это наиболее эффективным способом? Я не могу использовать конструктор «int length» для StringBuilder, так как длина моего CLOB длиннее, чем «int», и ему нужно «long» значение.

Мне не очень комфортно с классами ввода / вывода Java, и я хотел бы получить некоторые рекомендации.

Редактировать - Я пытался использовать этот код для clobToString ():

private String clobToString(Clob data) {
    StringBuilder sb = new StringBuilder();
    try {
        Reader reader = data.getCharacterStream();
        BufferedReader br = new BufferedReader(reader);

        String line;
        while(null != (line = br.readLine())) {
            sb.append(line);
        }
        br.close();
    } catch (SQLException e) {
        // handle this exception
    } catch (IOException e) {
        // handle this exception
    }
    return sb.toString();
}

Ответы [ 11 ]

0 голосов
/ 23 ноября 2014
public static String readClob(Clob clob) throws SQLException, IOException {
    StringBuilder sb = new StringBuilder((int) clob.length());
    Reader r = clob.getCharacterStream();
    char[] cbuf = new char[2048];
    int n;
    while ((n = r.read(cbuf, 0, cbuf.length)) != -1) {
        sb.append(cbuf, 0, n);
    }
    return sb.toString();
}

Приведенный выше подход также очень эффективен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...