当前位置: 首页 > 知识库问答 >
问题:

不用java编码快速转换CLOB到String

诸葛文博
2023-03-14
ResultSet rs = ... 
while (rs.next()){ 
   Clob clob = rs.getClob(3); 
   String s = clob.getSubString(1, MAX_TEXTITEM_LENGTH); 
   ... 

更新。麻烦在于:“By drivers使用SQL locator(Clob)实现Clob对象,这意味着Clob对象包含一个指向SQL Clob数据的逻辑指针,而不是数据本身。”如何将CLOB值内联(当我使用next()时)?

附言。因为英语不好。

共有1个答案

双元魁
2023-03-14

我尝试使用以下方法:

public static String clobToString(Clob data) {
    long dataL = System.currentTimeMillis();
    StringBuilder sb = new StringBuilder();
    if (data != null) {
        Reader reader = null;
        BufferedReader br = null;
        try {
            reader = data.getCharacterStream();
            br = new BufferedReader(reader);
            String line;
            while (null != (line = br.readLine())) {
                sb.append(line);
            }
        } catch (SQLException e) {
            logger.error(getClassAndMethodNameRuntime(), e);
        } catch (IOException e) {
            logger.error(getClassAndMethodNameRuntime(), e);
        } finally {
            closeObject(br);
            closeObject(reader);
        }
    }
    logger.trace("CLOB CONVERSION TIME1 ms: " + (System.currentTimeMillis() - dataL) + " Character: " + sb.length());
    return sb.toString();
}

public static String clobToString2(Clob data) {
    long dataL = System.nanoTime();
    String result = "";
    int MAX_TEXTITEM_LENGTH = 8000;

    if (data != null) {
        try {
            result = data.getSubString(1, MAX_TEXTITEM_LENGTH);
        } catch (SQLException e) {
            logger.error(getClassAndMethodNameRuntime(), e);
        }
    }
    logger.trace("CLOB CONVERSION TIME2 ms: " + ((double)(System.nanoTime() - dataL)) / 1000000 + " Character: " + result.length());
    return result;
}

转换时间变化很大:

    null
select dbms_lob.substr(dettXML__C, 4000, 1) from TABLE
 类似资料:
  • 问题内容: 如何快速将PFFile转换为UIImage? 在这段代码中,应用程序正在从解析中获取文件,现在我希望它显示在UIImageView上,但是我得到一个错误… 这是我的代码… 问题答案: PFFile是任何文件的解析表示。要获取“真实”文件(图像),您需要调用。试试吧:

  • 问题内容: 有没有免费的Java库,可以将一种编码格式的字符串转换为其他编码格式,例如iconv?我正在使用Java版本1.3。 问题答案: 你不需要标准库以外的库,只需使用Charset即可。(你可以只使用String构造函数和getBytes方法,但就我个人而言,我不喜欢仅使用字符编码的名称。输入错误的空间太大。) 编辑:正如注释中指出的那样,你仍然可以使用Charset实例,但是可以轻松使用

  • 问题内容: 是否可以使用存储元组?我有一个类似的元组。但是不起作用。我必须将元组转换为还是绝对不可能?谢谢你的帮助 问题答案: 无法对元组进行编码,因为它不是类,但是一种方法是分别对元组的每个组成部分进行编码,然后在解码时对每个组成部分进行解码,然后将元组的值设置为根据解码内容构造的元组。

  • 如果编辑器处于活跃状态(文件处于打开状态), 当焦点不在编辑器时, 按下ESC键可以让焦点从任何其他工具窗口返回到活跃的编辑器. 按下ESC键仅光标跳转到编辑器, Shift + ESC 关闭工具窗口后再跳转到编辑器。

  • 问题内容: 我正在尝试将String转换为Clob以便存储在数据库中。我有以下代码: 当我运行此命令时,没有设置Clob,输出如下: 我到处都说要使用setString方法,但我不知道为什么这对我不起作用。 问题答案: 您不需要中间实例,只需 在上使用:

  • 我想在将源代码传递给编译器之前,在编译时转换java源代码。换句话说,我想创建一个能够转换的预处理器 转换为任何其他代码,如: null 我很乐意为这两种方法找到一个java代码预处理的简单示例。 有没有人认为有什么聪明的方法来进行代码转换,而不是用多个ivy模块完全改变现有的大型代码库?注释似乎是最好的方法,但我不明白该怎么做。