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