java oracle clob string 大字符串存储

Posted 书未来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于java oracle clob string 大字符串存储的主要内容,如果未能解决你的问题,请参考以下文章

DBunit 生成 java.lang.ClassCastException:尝试加载 CLOB 字段时无法将 java.lang.String 强制转换为 oracle.sql.CLOB

oracle 怎么把clob转换成string pb

oracle数据库CLOB类型怎么转换为String

java Clob类型 转String

原创使用Java进行Clob转String字符串

Oracle35BLOB字段和CLOB字段