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.}