`

Java 存储和读取 oracle CLOB 类型字段的实用方法

    博客分类:
  • Java
 
阅读更多
原帖:http://blog.sina.com.cn/s/blog_5045c0920100acau.html


package oracle.clob;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleDriver;
import oracle.sql.CLOB;

public class ClobTest {
    String url = "jdbc:oracle:thin:@192.168.2.157:1521:orcl";
    String user = "xj";
    String pwd = "xj";
    String text = "这是要插入到CLOB里面的数据";

   
    private void clobImport() throws ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        DriverManager.registerDriver(new OracleDriver());
        Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
        String sql = "insert into clob_test(id,str) values ('1',?)";// 要执行的SQL语句

        PreparedStatement stmt = conn.prepareStatement(sql);// 加载SQL语句
        // PreparedStatement支持SQL带有问号?,可以动态替换?的内容。
        Reader clobReader = new StringReader(text); // 将 text转成流形式
        stmt.setCharacterStream(1, clobReader, text.length());// 替换sql语句中的?
        int num = stmt.executeUpdate();// 执行SQL
        if (num > 0) {
            System.out.println("ok");
        } else {
            System.out.println("NO");
        }
        stmt.close();
        conn.close();
    }

    private void clobExport() throws ClassNotFoundException, SQLException,
            IOException {
        // TODO Auto-generated method stub
        CLOB clob = null;
        String sql = "select * from clob_test where id=1";
        DriverManager.registerDriver(new OracleDriver());
        Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
        PreparedStatement stmt = conn.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        String id = "";
        String content = "";
        if (rs.next()) {
            id = rs.getString("id");// 获得ID
            clob = (oracle.sql.CLOB) rs.getClob("str"); // 获得CLOB字段str
            // 注释: 用 rs.getString("str")无法得到 数据 ,返回的 是 NULL;
            content = ClobToString(clob);
        }
        stmt.close();
        conn.close();
        // 输出结果
        System.out.println(id);
        System.out.println(content);
    }

    // 将字CLOB转成STRING类型
    public String ClobToString(CLOB clob) throws SQLException, IOException {

        String reString = "";
        Reader is = clob.getCharacterStream();// 得到流
        BufferedReader br = new BufferedReader(is);
        String s = br.readLine();
        StringBuffer sb = new StringBuffer();
        while (s != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
            sb.append(s);
            s = br.readLine();
        }
        reString = sb.toString();
        return reString;
    }

   
    // TODO Auto-generated method stub
    public static void main(String[] args) throws IOException,
            ClassNotFoundException, SQLException {
        // TODO Auto-generated method stub
        ClobTest clobtest = new ClobTest();
        // read file
        FileReader _frd = new FileReader(new File("D:\\DOS.txt"));
        BufferedReader _brd = new BufferedReader(_frd);
        String _rs = _brd.readLine();
        StringBuffer _input = new StringBuffer();
        while (_rs != null) {
            _input.append(_rs);
            _rs = _brd.readLine();
        }
        // System.out.println(_input.toString());
        // 输入测试
        clobtest.text = _input.toString();
        clobtest.clobImport();
        // 输出测试
        // clobtest.clobExport();
    }

}
分享到:
评论

相关推荐

    运用Java如何存取Oracle中的CLOB类型字段

    本文将详细介绍如何使用Java对Oracle中的CLOB类型字段进行操作。 #### CLOB简介 CLOB是Oracle数据库用于存储大型文本数据的一种数据类型,它可以存储最大为4GB的字符数据。在处理CLOB数据时,通常会涉及到以下几种...

    java中操作oracle的CLOB字段精解

    Java 中操作 Oracle 的 CLOB 字段是一种常见的操作,在实际开发中,我们经常需要在 Oracle 数据库中存储和读取大型文本数据,这时就需要使用 CLOB(Character Large OBject)类型的字段来存储这些数据。下面我们将...

    读取oracle数据库中clob字段的值

    ### 读取Oracle数据库中CLOB字段的值 在处理Oracle数据库时,经常会遇到需要读取CLOB(Character Large Object)类型字段的情况。CLOB主要用于存储大量的文本数据,如文章、文档等内容。由于CLOB类型的数据量可能...

    ORACLE中CLOB字段转String类型

    本文将详细介绍如何在Oracle中实现CLOB字段到字符串类型的转换,并探讨其中的关键技术和注意事项。 #### 一、CLOB概述 1. **定义**: - `CLOB`是Oracle数据库提供的一种特殊的数据类型,用于存储大文本数据。 - ...

    sql server中的image类型的数据导出到oracle的clob字段中

    为了将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中,我们需要使用Java 语言和 JDBC 驱动程序。下面是一个示例代码,演示如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中: ...

    java读取oracle数据库中clob字段.txt

    java读取oracle数据库中clob字段 把oracle数据库中字段类型为clob的字段值以字符串的形式读取出来

    java读写oracle clob字段

    本教程将介绍如何使用Java来读取和写入Oracle数据库中的CLOB字段。 首先,我们需要引入相关的Java和Oracle JDBC驱动库。在上述代码中,我们看到`import oracle.jdbc.driver.OracleDriver;`,这表示我们将使用Oracle...

    jdbc 处理clob类型字段

    查询CLOB字段时,我们可以使用ResultSet的getClob方法获取Clob对象,然后通过getClob.length()或getSubString方法读取数据。例如: ```java String sql = "SELECT my_clob_column FROM my_table WHERE id = ?"; ...

    数据库读取clob字段

    下面是一个Java方法`clobRead()`的具体实现,用于从Oracle数据库中读取CLOB字段的内容。 ```java public static String clobRead() throws Exception { DBlo_db = null; String detailinfo = ""; Connection ...

    JAVA对clob的操作

    CLOB操作与BLOB操作类似,但是在获取java.sql.Clob对象后需要强制转换为oracle.sql.CLOB对象,以便使用getCharacterOutputStream()方法将数据写入CLOB字段。 三、出库操作 出库操作可以使用ResultSet.getBlob()或...

    图片存入Oracle中,用clob和blob两种方式

    下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符数据,最大可达到4GB。虽然主要用于存储文本,但在本例中,由于图片可以被转换...

    dblink_clob字段异常解决方案

    当我们使用DBLink连接远程数据库时,CLOB字段可能无法正确地传输和处理。这是因为CLOB字段的处理方式与其他数据类型不同。在远程数据库中,CLOB字段可能会被截断或损坏,从而导致数据的不一致。 解决方案 解决...

    Mybatis 处理 CLOB、BLOB 类型数据

    Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis ...通过使用 MyBatis 处理 CLOB 和 BLOB 类型数据,可以方便地存储和读取大字段类型的数据,提高应用程序的性能和可扩展性。

    Oracle的CLOB大数据字段类型操作方法

    通过使用`dbms_lob`包提供的各种方法,开发者能够高效地处理这些大数据对象,实现读取、修改和删除操作。此外,由于CLOB支持4GB的数据量,这使得它成为存储大量文本数据的理想选择,尤其在大数据和企业级应用中。 ...

    oracle数据库的clob大字段在jdbc中的处理方式

    以上就是通过JDBC读取Oracle数据库中CLOB字段并转换为String的基本过程。需要注意的是,由于CLOB可能包含大量数据,因此在读取时要考虑到性能和内存消耗。如果数据过大,可以考虑分块读取或使用流式处理,避免一次性...

    Oracle导出Clob,Blob工具

    在描述中提到的“Oracle导出Clob,Blob等大字段工具”就是为了解决这个问题而设计的,它是一个自编写的实用程序,方便用户导出和管理Oracle数据库中的大对象数据。 Oracle数据库中的Clob类型用于存储大量的文本数据...

    Python如何应用cx_Oracle获取oracle中的clob字段问题

    4. 通过迭代游标逐行读取数据,对CLOB字段使用`row[clob_column_index].read()`方法获取内容。 5. 如果需要限制读取长度,可以传递参数给`read`方法,如`clob_data.read(n)`,其中`n`是字节长度。 遵循这些步骤,你...

    spring+hibernate操作oracle的clob字段

    在Java实体类中,表示CLOB字段的属性应为`String`类型,这样可以直接存储和读取文本内容。在Hibernate的映射文件中,使用`org.springframework.orm.hibernate3.support.ClobStringType`类型来映射这个属性,如下所...

Global site tag (gtag.js) - Google Analytics