`

Java 存储和读取 oracle CLOB 类型字段

    博客分类:
  • sql
 
阅读更多

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里面的数据";

    
/**
     * 
@throws ClassNotFoundException
     * 
@throws SQLException
     *             数据库里已经建好表CLOB_TEST(ID NUMBER,STR 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;
    }

    
/**
     * 
@param args
     * 
@throws IOException
     * 
@throws SQLException
     * 
@throws ClassNotFoundException
     
*/
    
// 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应用程序中通过JDBC与Oracle交互时,正确地读取和写入CLOB类型的数据变得尤为重要。本文将详细介绍如何使用Java对Oracle中的CLOB类型字段进行操作。 #### CLOB简介 CLOB是Oracle数据库用于存储大型文本数据...

    java中操作oracle的CLOB字段精解

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

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

    在Java中,读取Oracle数据库中的CLOB字段可以通过以下步骤实现: 1. **获取CLOB对象**: 首先,通过执行查询语句并从结果集中获取CLOB对象。示例代码中的`lookmail[6]`表示从查询结果的第7个元素(下标为6)获取...

    ORACLE中CLOB字段转String类型

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

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

    我们使用了 Java 语言和 JDBC 驱动程序来实现数据的导出,并将 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 ...

    dblink_clob字段异常解决方案

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

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

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

    JAVA对clob的操作

    JAVA对CLOB的操作 在JAVA中,操作Oracle数据库中的BLOB和CLOB类型字段是一种常见的需求。...通过JDBC和JNDI两种方式可以实现入库和出库操作,但是在实现时需要注意强制转换对象的类型,以便正确地操作BLOB和CLOB字段。

    Mybatis 处理 CLOB、BLOB 类型数据

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

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

    总结一下,Python使用cx_Oracle处理Oracle中的CLOB字段时,关键点在于: 1. 使用`cx_Oracle.connect`建立数据库连接。 2. 创建游标对象并执行SQL查询。 3. 不要一次性使用`cursor.fetchall()`获取所有数据,尤其是...

    Oracle导出Clob,Blob工具

    Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...

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

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

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

    创建包含CLOB字段的表是第一步。例如,创建一个名为TEMP的表,包含一个CLOB类型的字段temp_clob,可以使用以下SQL语句: ```sql CREATE TABLE TEMP ( name VARCHAR2(200), age NUMBER, temp_clob CLOB ) ...

    spring+hibernate操作oracle的clob字段

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

Global site tag (gtag.js) - Google Analytics