我有一个h2数据库与aes加密启用。它有一个clob类型的列。列包含带有新行字符的长文本(有时)。当我在h2控制台中检查表时,我得到插入了所有新行的输出,但是当我查询表时,没有新行字符。我使用以下代码将clob对象转换为字符串对象:
public 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 | IOException e) {
e.printStackTrace();
}
return sb.toString();
}
我想这里出了点事。有没有其他有效的方法来完成clob到字符串的转换。
1条答案
按热度按时间xe55xuns1#
得到一个
String
来自a的值CLOB
列中,请使用以下选项之一:使用
resultSet.getString()
:如果数据已经从
ResultSet
作为一个Clob
(使用getClob()
),使用clob.getSubString()
:如果你因为某种模糊的原因
Reader
(来自resultSet.getCharacterStream()
或者clob.getCharacterStream()
),复制块中的字符,并记住对资源使用try,例如。或使用java 10+:
当然,这三种方法都假设文本符合
String
,即少于约21亿个字符,或仅约10亿个字符,具体取决于java版本和使用的字符(非拉丁1)。