Clob in java

CLOB是一种数据库中的数据类型。
Character Large Object
SQL 类型 CLOB 在 JavaTM 编程语言中的映射关系。SQL CLOB 是内置类型,它将字符大对象 (Character Large Object) 存储为数据库表某一行中的一个列值。默认情况下,驱动程序使用 SQL locator(CLOB) 实现 Clob 对象,这意味着 CLOB 对象包含一个指向 SQL CLOB 数据的逻辑指针而不是数据本身。Clob 对象在它被创建的事务处理期间有效。
在一些数据库系统里,也使用Text 作为CLOB的别名,比如SQL Server.

CLOB和BLOB的区别

CLOB使用CHAR来保存数据。  如:保存XML文档。
BLOB就是使用二进制保存数据。  如:保存位图。


JAVA里面对CLOB的操作
在绝大多数情况下,使用2种方法使用CLOB;
1 相对比较小的,可以用String进行直接操作,把CLOB看成字符串类型即可(可使用Sring类的常用方法:trim(),replace(),repalceAll().............;

2 如果比较大,可以用 getAsciiStream 或者 getUnicodeStream 以及对应的 setAsciiStream 和 setUnicodeStream 即可;

读取数据
ResultSet rs = stmt.executeQuery("SELECT TOP 1 * FROM Test1");
rs.next();
Reader reader = rs.getCharacterStream(2);
更新数据
PreparedStatement pstmt = con.prepareStatement("INSERT INTO test1 (c1_id, c2_vcmax) VALUES (?, ?)");
pstmt.setInt(1, 1);
pstmt.setString(2, htmlStr);
pstmt.executeUpdate();
查询数据
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM test1");
rs.next();
Clob clob = rs.getClob(2);
long pos = clob.position("dog", 1);
clob.setString(1, "cat", len, 3);
rs.updateClob(2, clob);
rs.updateRow();




java  clob互转String

import java.io.Reader;  
02.import java.sql.Clob;  
03.  
04.public class ClobTransfer {  
05.     /** 
06.     * 将String转成Clob ,静态方法 
07.     *  
08.     * @param str 
09.     *            字段 
10.     * @return clob对象,如果出现错误,返回 null 
11.     */  
12.    public static Clob stringToClob(String str) {  
13.        if (null == str)  
14.            return null;  
15.        else {  
16.            try {  
17.                java.sql.Clob c = new javax.sql.rowset.serial.SerialClob(str  
18.                        .toCharArray());  
19.                return c;  
20.            } catch (Exception e) {  
21.                return null;  
22.            }  
23.        }  
24.    }  
25.  
26.    /** 
27.     * 将Clob转成String ,静态方法 
28.     *  
29.     * @param clob 
30.     *            字段 
31.     * @return 内容字串,如果出现错误,返回 null 
32.     */  
33.    public static String clobToString(Clob clob) {  
34.        if (clob == null)  
35.            return null;  
36.        StringBuffer sb = new StringBuffer();  
37.        Reader clobStream = null;  
38.        try {  
39.            clobStream = clob.getCharacterStream();  
40.            char[] b = new char[60000];// 每次获取60K  
41.            int i = 0;  
42.            while ((i = clobStream.read(b)) != -1) {  
43.                sb.append(b, 0, i);  
44.            }  
45.        } catch (Exception ex) {  
46.            sb = null;  
47.        } finally {  
48.            try {  
49.                if (clobStream != null) {  
50.                    clobStream.close();  
51.                }  
52.            } catch (Exception e) {  
53.            }  
54.        }  
55.        if (sb == null)  
56.            return null;  
57.        else  
58.            return sb.toString();  
59.    }  
60.      
61.    public static String clobToString(oracle.sql.CLOB clob){  
62.        try{  
63.            Reader inStream = clob.getCharacterStream();  
64.            char[] c = new char[(int) clob.length()];  
65.            inStream.read(c);  
66.            String data = new String(c);  
67.            inStream.close();  
68.            return data;  
69.        }catch(Exception e){  
70.            e.printStackTrace();  
71.            return "";  
72.        }  
73.    }  
74.}  








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值