如何从oracle中获取Clob数据类型到java中的ResultSet

问题描述 投票:0回答:2

我连接的是oracle数据库。我需要从表中获取信息到我的服务类,然后将其发送到控制器。 变量之一是 CLOB 数据类型。如何获取它并解析为字符串列表? 这是我的伪代码:

public class ModelClass {
private List<String> comments;

public ModelClass(List<String> comments) {
    this.comments = comments;
}

public List<String> getComments() {
    return comments;
}
}

然后我尝试在 ResultSet 中执行查询并将其放入 ModelClass 的列表中

ResultSet rS = dataSource.getConnection().createStatement().executeQuery(query.toString());
            while (rS.next()) {
                result.add(new ModelClass((List<String>) rS.getObject(13)));

显然这是行不通的。我不知道如何获得那个 Clob。当我尝试获取结果时,出现以下错误:

"oracle.sql.CLOB cannot be cast to java.util.List",
当我将 rS.Object(13) 更改为 rS.getClob(13) 时,它不起作用。你能告诉我如何获取那个 Clob 对象吗?实际上是一个有 4 个字段的 JSON。

java oracle resultset clob
2个回答
0
投票

您通过

rS.getObject(13)
获得的 CLOB 对象是一个类似字符串的对象。如果您想将其视为 4 个字段的列表,您应该使用任何库(如 GSON)将其转换为 JSON 对象,然后向 JSON 对象询问其字段。

while (rS.next()) {

    CLOB clobOjb = (CLOB) rS.getObject(13);
    // convert clobObj (or it's string conversion) to JSON
    // extract the fields from JSON object and store them in a list
    result.add(new ModelClass( /* the list */ ));

0
投票

Clob clob = rs.getClob(13);
String json = clob.getSubString(1, (int) clob.length());

现在您可以使用 GSON 库将其转换为对象

© www.soinside.com 2019 - 2024. All rights reserved.