grails中如何存取Clob类型数据

首先说一下CLOB。CLOB是一种数据库中的数据类型,它将字符大对象存储为数据库表某一行中的一个列值,请注意,这里说的是字符大数据,驱动程序使用 SQL locator(CLOB) 实现 Clob 对象,这意味着 CLOB 对象包含一个指向 SQL CLOB 数据的逻辑指针而不是数据本身,也就是说,在表里面,Clob类型的存储的字段,它里面存的是一个指针而不是数据本身,这在统计时非常好用,因为你不需要知道数据是什么,只需要知道有多少个数据就够了。

这里也说明一下CLOB和BLOB的区别

1.CLOB是使用CHAR来保存数据,也就是说它是面对字符流的,如果它是保存一些相片之类的,会把二进制转化为字符进行存储。

2.BLOB是试用二进制来保存数据的。

如何在grails中存储Clob类型数据:

1.在javaAPI中,Clob是一个接口,这个接口的一个实现类就是javax.sql.rowset.serial.SerialClob,通过这个构造参数就可以把一个数据以Clob字符串存进数据库。例如:(此处buffer是一个StringBuffer的一个对象)

salarySettleOriginInstance.content = new javax.sql.rowset.serial.SerialClob(buffer.toString().toCharArray())

如何在grails中读取Clob类型数据:

1.这里要使用javax.sql.rowset.serial.SerialClob类的getSubString(long pos,
            int length
)方法来抓取数据库的Clob类型字段,它返回包含在此 SerialClob 对象中的子字符串的副本,从给定位置开始,后跟指定字符数。例如:

def content = salarySettleOriginInstance.content.getSubString((Long)1, (int)salarySettleOriginInstance.content.length())

    • 参数:
    • pos - 子字符串中要复制的第一个字符的位置;SerialClob 对象的第一个字符位于位置 1;不得小于 1,并且开始位置与子字符串的长度之和必须小于此 SerialClob 对象的长度
    • length - 子字符串中要返回的字符数;不得大于此 SerialClob 对象的长度,并且开始位置与子字符串的长度之和必须小于此 SerialClob 对象的长度
    • 返回:
    • 包含此 SerialClob 对象的子字符串的 String 对象,从给定位置开始,包含指定的连续字符数
    • 抛出:
    • SerialException - 如果两个参数中的任意一个超出限制

此文章是针对grails存取Clob数据类型的,如果使用原始的java语音的jdbc进行存取,请参考Clob百度摆酷,附加链接http://baike.baidu.com/view/1889327.htm?fr=aladdin

ps:此处javaJDK为1.7,grails版本为2.2

时间: 2024-08-03 04:16:26

grails中如何存取Clob类型数据的相关文章

Hibernate操作Clob类型数据

在POJO中字符串大对象可以声明成一个java.lang.String或java.sql.Clob类型. 当程序从数据库中加载Clob类型数据时,仅仅加载了一个Clob类型的数据的逻辑指针.我们需要通过使用Clob.getCaracterStream()方法得到Clob类型的数据输入流之后才能获取大对象数据. 看下面具体代码 package dao; import java.io.BufferedReader; import java.io.IOException; import java.io

Hibernate操作Clob类型数据是怎样弄的

在POJO中字符串大对象可以声明成一个java.lang.String或java.sql.Clob类型. 当程序从数据库中加载Clob类型数据时,仅仅加载了一个Clob类型的数据的逻辑指针.我们需要通过使用Clob.getCaracterStream()方法得到Clob类型的数据输入流之后才能获取大对象数据. 看下面具体代码 package dao; import java.io.BufferedReader; import java.io.IOException; import java.io

oracle中Blob和Clob类型的区别

一.oracle中Blob和Clob类型的区别BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的的,或者可以直接用LOB字段代替这两个.但是为了更好的管理ORACLE数据库,通常像图片.文件.音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去.而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便. BLOB全称为二进制大型对象(Binary Large Object).它用于存储数据

mysql存取blob类型数据

参考网址:http://www.cnblogs.com/jway1101/p/5815658.html 首先是建表语句,需要实现将表建立好. CREATE TABLE `blobtest` ( `primary_id` varchar(32) NOT NULL, `bank_id` varchar(32) NOT NULL, `bank_name` varchar(64) NOT NULL, `blob_data` blob NOT NULL, PRIMARY KEY (`primary_id`

Hibernate的Annotation中实体BLOB CLOB类型的注解

在Hibernate Annotation中,实体BLOB.CLOB类型的注解与普通的实体属性有些不同,具体操作如下: BLOB类型的属性声明为byte[]或者java.sql.Blob: @Lob @Basic(fetch=FetchType.LAZY) @Column(name="IMGS", columnDefinition="BLOB", nullable=true) private byte[] imgs; public byte[] getImgs()

Oracle处理Clob类型数据入库(String入库)

从网上查找一堆参考,要么语焉不详,要么不可行.自己鼓捣了一堆可以正常入库了.请看最后: insert into CP_V_INFO" + "(ID, "+ "PROJECT_ID, "+ …… "V_INFO, "+ …… "VERSION)values(?,?,?,?,?,?,?,?,?,?," + "?,?,EMPTY_CLOB(),?,?,?,?,?,?,?," + "?,?,?,

[python] python 读写Oracle clob类型数据的处理

clob字段是oracle专门用于存储超长字符串的字段类型,一般varchar2只能存4000个字符串,超过4000个就存不下去了. 如果直接使用 pandas.read_sql(sql, conn)会报错,那么如何将clob读取到python中呢? 1.read方法 import cx_Oracle conn = cx_Oracle.connect("user/[email protected]/db") cur = conn.cursor() # col 是clob字段 cur.e

为什么js函数的参数中能传递数值类型数据不能传递UUID

这是我在做毕设项目时遇到的问题.前台点击按钮,触发一个js函数,将uuid传递到后天的业务. 一开始的错误代码是这样的: str= "<a href='#' onclick='potionproxy("+row.erhuoId+")'>取消代销</a>": 经过 我不屑的努力 ,终于找到了答案 str= "<a href='#' onclick=\"potionproxy(\'"+row.erhuoId+&

使用Python向MySQL数据库中存入json类型数据

0.说明 因为出于个人项目的需要,获取到的数据都是json类型的,并且都要存入MySQL数据库中,因为json类型数据不像一般的文本数据,所以在存入MySQL时需要注意的问题很多. 在网上找了很多方法,整理了一下比较实用可靠的,总结下来就是下面的过程: MySQL表中需要保证存储json数据的列类型为BLOB: 使用sql语句时,使用MySQLdb.excape_string函数来对json数据进行转义: 查询数据时,将结果使用json.loads就能够得到原来的Python数据类型: 下面就来