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

标签 java oracle resultset clob

我连接了oracle数据库。我需要从表中获取信息到我的服务类,然后将其发送到 Controller 。 变量之一是 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。

最佳答案

通过 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 */ ));

关于java - 如何在java中从oracle获取Clob数据类型到ResultSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50075592/

相关文章:

java - 如何在 Java EE 应用程序中使用丰富的 header 将请求代理到另一个位置

oracle - 在 BLOB 上使用 DBMS_LOB.SUBSTR 导致 ORA-06502

java - 如何检查值是否存在/为什么 ResultSet 在 SQLite 中关闭?

java - 使用HSQLDB时如何获取Resultset返回的行数?

java - 如何按字母顺序对自定义 ListView 进行排序?

java - 我可以在像这样的 map 中使用通配符 Map<Class<?>, ?>

sql - SUM 与 group by 返回错误

java - 如何根据JDBC结果集创建表

java - 替换 fragment 时如何防止 "java.lang.IllegalStateException: Fragment already added"?

sql - 如何对两个表中的列值求和并保留仅在一个表中的另一列