Java 存储和读取 oracle CLOB 类型字段


Java 存储和读取 oracle CLOB 类型字段

  1. package oracle.clob;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.File;   
  5. import java.io.FileReader;   
  6. import java.io.IOException;   
  7. import java.io.Reader;   
  8. import java.io.StringReader;   
  9. import java.sql.Connection;   
  10. import java.sql.DriverManager;   
  11. import java.sql.PreparedStatement;   
  12. import java.sql.ResultSet;   
  13. import java.sql.SQLException;   
  14. import oracle.jdbc.driver.OracleDriver;   
  15. import oracle.sql.CLOB;   
  16.   
  17. public class ClobTest {   
  18. String url = "jdbc:oracle:thin:@192.168.2.157:1521:orcl";   
  19. String user = "xj";   
  20. String pwd = "xj";   
  21. String text = "这是要插入到CLOB里面的数据";   
  22.   
  23.   
  24. private void clobImport() throws ClassNotFoundException, SQLException {   
  25. // TODO Auto-generated method stub   
  26. DriverManager.registerDriver(new OracleDriver());   
  27. Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象   
  28. String sql = "insert into clob_test(id,str) values ('1',?)";// 要执行的SQL语句   
  29.   
  30. PreparedStatement stmt = conn.prepareStatement(sql);// 加载SQL语句   
  31. // PreparedStatement支持SQL带有问号?,可以动态替换?的内容。   
  32. Reader clobReader = new StringReader(text); // 将 text转成流形式   
  33. stmt.setCharacterStream(1, clobReader, text.length());// 替换sql语句中的?   
  34. int num = stmt.executeUpdate();// 执行SQL   
  35. if (num > 0) {   
  36. System.out.println("ok");   
  37. else {   
  38. System.out.println("NO");   
  39. }   
  40. stmt.close();   
  41. conn.close();   
  42. }   
  43.   
  44. private void clobExport() throws ClassNotFoundException, SQLException,   
  45. IOException {   
  46. // TODO Auto-generated method stub   
  47. CLOB clob = null;   
  48. String sql = "select * from clob_test where id=1";   
  49. DriverManager.registerDriver(new OracleDriver());   
  50. Connection conn = DriverManager.getConnection(url, user, pwd);// 得到连接对象   
  51. PreparedStatement stmt = conn.prepareStatement(sql);   
  52. ResultSet rs = stmt.executeQuery();   
  53. String id = "";   
  54. String content = "";   
  55. if (rs.next()) {   
  56. id = rs.getString("id");// 获得ID   
  57. clob = (oracle.sql.CLOB) rs.getClob("str"); // 获得CLOB字段str   
  58. // 注释: 用 rs.getString("str")无法得到 数据 ,返回的 是 NULL;   
  59. content = ClobToString(clob);   
  60. }   
  61. stmt.close();   
  62. conn.close();   
  63. // 输出结果   
  64. System.out.println(id);   
  65. System.out.println(content);   
  66. }   
  67.   
  68. // 将字CLOB转成STRING类型   
  69. public String ClobToString(CLOB clob) throws SQLException, IOException {   
  70.   
  71. String reString = "";   
  72. Reader is = clob.getCharacterStream();// 得到流   
  73. BufferedReader br = new BufferedReader(is);   
  74. String s = br.readLine();   
  75. StringBuffer sb = new StringBuffer();   
  76. while (s != null) {// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING   
  77. sb.append(s);   
  78. s = br.readLine();   
  79. }   
  80. reString = sb.toString();   
  81. return reString;   
  82. }   
  83.   
  84.   
  85. // TODO Auto-generated method stub   
  86. public static void main(String[] args) throws IOException,   
  87. ClassNotFoundException, SQLException {   
  88. // TODO Auto-generated method stub   
  89. ClobTest clobtest = new ClobTest();   
  90. // read file   
  91. FileReader _frd = new FileReader(new File("D://DOS.txt"));   
  92. BufferedReader _brd = new BufferedReader(_frd);   
  93. String _rs = _brd.readLine();   
  94. StringBuffer _input = new StringBuffer();   
  95. while (_rs != null) {   
  96. _input.append(_rs);   
  97. _rs = _brd.readLine();   
  98. }   
  99. // System.out.println(_input.toString());   
  100. // 输入测试   
  101. clobtest.text = _input.toString();   
  102. clobtest.clobImport();   
  103. // 输出测试   
  104. // clobtest.clobExport();   
  105. }   
  106.   
  107. }  

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/foamflower/article/details/4497764


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM