`
diaolanshan
  • 浏览: 175752 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

数据库clob的操作

    博客分类:
  • JAVA
阅读更多

下面介绍数据库中clob(characher large object)(对应于sql server中中的text字段)字段的操作问题:

在插入的时候可以通过函数Hibernate.createClob()将字符串或者流编程clob类型(java.sql.Clob)或者通过以下的这个东东的转换

public class ClobUtil implements Clob{

    private Reader reader;
    private boolean needsReset = false;
    private int length;
    
    public ClobUtil(String str){
        reader = new StringReader(str);
        length = str.length();
    }

    public InputStream getAsciiStream() throws SQLException {
        try {
            if (needsReset) reader.reset();
        }
        catch (IOException ioe) {
            throw new SQLException("could not reset reader");
        }
        needsReset = true;
        return new ReaderInputStream(reader);
    }

    public Reader getCharacterStream() throws SQLException {
        try {
            if (needsReset) reader.reset();
        }
        catch (IOException ioe) {
            throw new SQLException("could not reset reader");
        }
        needsReset = true;
        return reader;
    }

    public String getSubString(long pos, int length) throws SQLException {
        return null;
    }

    public long length() throws SQLException {
        return  length;
    }

    public long position(String searchstr, long start) throws SQLException {
        return 0;
    }

    public long position(Clob searchstr, long start) throws SQLException {
        return 0;
    }

    public OutputStream setAsciiStream(long pos) throws SQLException {
        return null;
    }

    public Writer setCharacterStream(long pos) throws SQLException {
        return null;
    }

    public int setString(long pos, String str) throws SQLException {
        return 0;
    }

    public int setString(long pos, String str, int offset, int len) throws SQLException {
        return 0;
    }

    public void truncate(long len) throws SQLException {
        
    }
}

 
ClobUtil继承自clob,所以可以直接使用。

当从数据库中取出有clob的字段时,也要用流来处理,如下代码可以实现:
        

eric = dao.getEricByID(13);
Reader reader = eric.getName().getCharacterStream();
//name 为clob类型
BufferedReader br = new BufferedReader(reader);
StringBuffer sb = new StringBuffer();
String s = br.readLine();
sb.append(s);
while(s!=null){
      s = br.readLine();
      sb.append(s);
}
System.out.println(sb.toString());

  

如果数据库为oracle,在取出clob字段时采用如下的方法:

//clobtt为clob类型

Writer wr = clobtt.getCharacterOutputStream(); 
wr.write(strtmp); 
wr.flush(); 
wr.close(); 

  

如果数据库为mysql,最好修改如下文件:

my.ini里面的max_allowed_packet ,这个限制了blob文件可存放的最大的容量,默认好像是1m

分享到:
评论

相关推荐

    数据库中clob类型转换的问题 数据库中clob类型转换的问题

    在探讨“数据库中CLOB类型转换的问题”这一主题时,我们首先需要理解CLOB(Character Large Object)数据类型的基本概念及其在数据库中的应用场景。随后,将深入分析CLOB类型转换过程中可能遇到的问题,并提供相应的...

    数据库读取clob字段

    ### 数据库读取CLOB字段 #### 概述 在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型。CLOB能够容纳4GB的文本信息,适用于存储如文章、报告或者XML文档等大型文本数据。...

    向Oracle数据库插入Clob大段文本解决方法

    本文将详细介绍如何有效地向Oracle数据库插入Clob大段文本,以及在操作过程中可能遇到的问题与解决方案。 ### 一、理解CLOB类型 CLOB类型是Oracle数据库中用于存储大量文本数据的数据类型,它可以存储最大为4GB的...

    java中操作oracle的CLOB字段精解

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

    ORACLE中CLOB字段转String类型

    在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何其他大型文本内容。然而,在处理CLOB...

    mybatis 对clob类型转换

    在使用MyBatis框架进行数据操作时,我们可能会遇到CLOB类型数据的读写问题,尤其是在转换和插入数据库时。本篇将详细探讨MyBatis中处理CLOB类型数据的转换以及解决可能出现的异常情况。 首先,MyBatis是Java中的一...

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

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

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

    通过上述示例,我们可以看到如何使用Java通过JDBC操作Oracle数据库中的CLOB类型数据。这些基本的操作是开发人员在日常工作中经常需要用到的功能之一。掌握这些技术对于实现高效、可靠的数据库应用程序至关重要。此外...

    java实例对数据库的clob字段操作

    该类中包含有多个方法对数据库中的clob字段进行查询、插入、事物处理、批处理、调用存储过程等操作。使用的是myeclipse8.6,oracle11g,测试的时候执行手动建个表xml_buffer,包含id、xmlcontent字段即可,然后在...

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

    这篇文档将详细阐述如何在JDBC中有效地读取和操作Oracle数据库的CLOB字段,并将其转换为String类型。 首先,理解CLOB对象的特性是关键。CLOB是一种BLOB(Binary Large Object)的变种,专用于存储字符数据。在JDBC...

    clob数据库表结构如下

    在数据库中,CLOB(Character Large Object)是用来存储大量字符数据的类型,常用于存储文本、XML文档等。这里提到的“clob数据库表结构如下”可能是指一个包含CLOB字段的数据库表,用于存储大文本信息。表的结构...

    将长于4000字符的字符串转化为CLOB类型存入数据库

    在C#中操作Oracle数据库通常会用到Oracle.NET接口,其中包括了对CLOB类型的直接支持。 - **创建OracleConnection对象**:首先需要创建一个连接到Oracle数据库的对象。 - **创建OracleCommand对象**:接着创建一...

    JAVA对clob的操作

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

    Hibernate对BLOB CLOB操作

    本文将深入探讨Hibernate如何进行BLOB和CLOB的操作,以及相关的核心概念和实践示例。 BLOB用于存储二进制数据,例如图片或文档,而CLOB则用于存储大量的字符数据,如长篇的文本内容。在数据库中,这两个类型通常...

    spring2通过jdbc的方式读取、更新数据库的clob或者blob类型的数据

    - CLOB和BLOB的读取速度通常比普通字段慢,因此在设计数据库表结构时应尽量避免频繁的读取操作。 总的来说,Spring通过JDBC提供了一套完善的接口和工具类来处理CLOB和BLOB,使得开发者无需直接与JDBC API打交道,...

    CLOB、BLOB___CLOB与BLOB的区别

    CLOB、BLOB 与 CLOB 与 BLOB 的区别 CLOB(Character Large OBject)是一种数据库类型,用于存储大型字符对象。...Java 中可以使用不同的方式来操作 CLOB,包括将 CLOB 看成字符串类型和使用流式操作方式。

    如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中

    在数据库迁移或数据同步的过程中,有时需要将含有大对象(LOB,包括BLOB和CLOB)的数据从一个数据库系统复制到另一个不完全支持LOB的数据库系统。本例中,我们讨论如何将DB2数据库中的BLOB数据类型复制到Oracle...

    DELPHI的CLOB和BLOB存取处理.zip_DELPHI的CLOB和BLOB存取处理_hallzgz

    在数据库编程领域,CLOB(Character Large Object)和BLOB(Binary Large Object)是用于存储大量文本和二进制数据的数据类型。在DELPHI中,处理这些大型对象时需要特殊的技术和策略。本篇文章将深入探讨DELPHI中...

Global site tag (gtag.js) - Google Analytics