java oracle clob string 大字符串存储【转】

单位用到了oracle存储string类型到数据库里的clob,上网查看资料找到解决方案。如下:

 1     public class ClobTest {
 2
 3         static String url = "jdbc:oracle:thin:@10.12.10.18:1521:orcl";
 4         static String user = "cwbe1_9999";
 5         static String pwd = "or777";
 6         static String text = "这是要插入到CLOB里面的数据,更新数据!" + "update";
 7
 8         private static int clobImport() throws ClassNotFoundException, SQLException {
 9             DriverManager.registerDriver(new OracleDriver());
10             Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
11             String sql = "insert into ETLNEEDPARAM(F_KEY,F_VALUE) values (‘defaultpo‘,?)";// 要执行的SQL语句
12             PreparedStatement stmt = conn.prepareStatement(sql);// 加载SQL语句
13             // PreparedStatement支持SQL带有问号?,可以动态替换?的内容。
14             Reader clobReader = new StringReader(text); // 将 text转成流形式
15             stmt.setCharacterStream(1, clobReader, text.length());// 替换sql语句中的?
16             int num = stmt.executeUpdate();// 执行SQL
17             if (num > 0) {
18                 System.out.println("ok");
19             } else {
20                 System.out.println("NO");
21             }
22             stmt.close();
23             conn.close();
24             return num;
25         }
26
27         private static int clobUpdate(String key) throws ClassNotFoundException, SQLException {
28
29             DriverManager.registerDriver(new OracleDriver());
30             Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
31             String sql = "update ETLNEEDPARAM set F_VALUE = ? where F_KEY = ? ";// 要执行的SQL语句
32             PreparedStatement stmt = conn.prepareStatement(sql);// 加载SQL语句
33             // PreparedStatement支持SQL带有问号?,可以动态替换?的内容。
34             Reader clobReader = new StringReader(text); // 将 text转成流形式
35             stmt.setString(2, key);
36             stmt.setCharacterStream(1, clobReader, text.length());// 替换sql语句中的?
37             int num = stmt.executeUpdate();// 执行SQL
38             if (num > 0) {
39                 System.out.println("ok");
40             } else {
41                 System.out.println("NO");
42             }
43             stmt.close();
44             conn.close();
45             return num;
46         }
47
48         private static String clobExport() throws ClassNotFoundException, SQLException, IOException {
49
50             CLOB clob = null;
51             String sql = "select F_VALUE from ETLNEEDPARAM where F_KEY =‘test1‘";
52             DriverManager.registerDriver(new OracleDriver());
53             Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象
54             PreparedStatement stmt = conn.prepareStatement(sql);
55             ResultSet rs = stmt.executeQuery();
56             String content = "";
57             if (rs.next()) {
58                 clob = (oracle.sql.CLOB) rs.getClob("F_VALUE"); // 获得CLOB字段str
59                 // 注释: 用 rs.getString("str")无法得到 数据 ,返回的 是 NULL;
60                 content = ClobToString(clob);
61             }
62             stmt.close();
63             conn.close();
64             return content;
65         }
66
67         // 将字CLOB转成STRING类型
68
69         public static String ClobToString(CLOB clob) throws SQLException, IOException {
70             String reString = "";
71             Reader is = clob.getCharacterStream();// 得到流
72             BufferedReader br = new BufferedReader(is);
73             String s = br.readLine();
74             StringBuffer sb = new StringBuffer();
75             // 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
76             while (s != null) {
77                 sb.append(s);
78                 s = br.readLine();
79             }
80             reString = sb.toString();
81             return reString;
82         }
83
84         public static void main(String[] args) throws IOException,ClassNotFoundException, SQLException {
85             // System.out.println(clobImport());
86             System.out.println(clobUpdate("fmo"));
87             System.out.println(clobUpdate("epo"));
88
89             // System.out.println(clobExport());
90
91         }  

转自:http://bestxiaok.iteye.com/blog/1027733

时间: 2024-10-08 21:24:11

java oracle clob string 大字符串存储【转】的相关文章

Java 对Oracle Clob(大字符串)格式的操作 增改查

package com.study.db; import java.io.FileInputStream; import java.io.IOException;import java.io.Reader;import java.io.Writer;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import j

探究oracle clob字段是如何存储的

clob字段存储的是文本,如果存储少于4000个字节则clob字段会和记录存放在一起,如果存储超过4000个字节,则不会与记录存放在一起.值得注意的是,这里的4000个字节并不是等同于varchar2(4000),那相当于什么呢,请看下列实验,数据库版本是10.2.0.1.0: drop table test_clob purge; create table test_clob ( id number, clob1  clob ); insert into test_clob values(1,

java中的String类 字符串拆分成字符串数组 判定邮箱地址 字符串比较 看结果?

看结果1? package com.swift; class ArrayString { public static void main(String[] args) { String str = "swift:30|sunny:28|Ben:32"; String str1[] = str.split("\\|"); for (int i = 0; i <= str1.length - 1; i++) { String str2[] = str1[i].sp

java读取clob字段的几种方法

最近频繁处理clob字段,故集中了几种读取clob字段的方法,供大家参考. 第一种: Clob clob = rs.getClob("remark");//java.sql.Clob     String detailinfo = "";     if(clob != null){      detailinfo = clob.getSubString((long)1,(int)clob.length());     } 第二种: Clob clob = rs.ge

关于java读取clob字段的几种方法

最近频繁处理clob字段,故集中了几种读取clob字段的方法,供大家参考. 第一种: Clob clob = rs.getClob("remark");//java.sql.Clob String detailinfo = ""; if(clob != null){ detailinfo = clob.getSubString((long)1,(int)clob.length()); } 第二种: Clob clob = rs.getClob("remar

Java为什么把String设计成不可变的(immutable)

在java中,String是字符串常量,可以从内存,同步机制,数据结构等方面分析 1:字符串中常量池的需要 String不同于普通基础变量类型的地方在于对象.java中的字符串对象都保存在字符串常量池中,创建字符串时首先会从这个常量池中查找是否已经存在相同的字符串对象,不存在的情况下才会创建新的字符串对象. 如果字符串被设计成可变的,便存在当修改一个字符串的时候同时影响另一个指向常量池的相同对象(有潜在性风险) 2:HashCode缓存 在HashMap或者HashSet数据结构中,存储Stri

Java 存储和读取 oracle CLOB 类型字段的实用方法

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

【转载】Java基础之String中equals,声明方式,等大总结

转载请注明出处:http://blog.csdn.net/dmk877/article/details/49420141 无论你是一个编程新手还是老手,提到String你肯定感觉特别熟悉,因为String类我们在学习java基础的时候就已经学过,但是String类型有我们想象的那么简单吗?其实不然,String类型的知识点还是比较多的.今天就和大家来一起讨论一下,关于String的一些容易让人疑惑的地方,废话不多说进入正题...如有谬误请批评指正,如果有疑问请留言.我会在第一时间修改或回答 通过

java 操作数据库clob类型大字段

java 操作数据库clob类型大字段,处理工具类如下: package org.shefron.utils; import java.io.StringReader; import java.sql.Clob; import java.sql.PreparedStatement; import java.sql.SQLException; public class ClobUtils { public final static String getValueFromClob(Clob clob