編寫一個 JDBC 示例,使用 getCharacterStream() 方法從表中檢索 Clob 值?


ResultSet 介面提供了一個名為 getClob() 的方法,用於從資料庫中的表中檢索 clob 資料型別。此外,它還提供了一個名為 getCharacterStream() 的方法。

與 getClob() 類似,此方法也接受一個表示列索引的整數(或表示列名稱的字串值),並檢索指定列中的值。不同之處在於,與 getClob() 方法(返回 Clob 物件)不同,此方法返回 Reader 類的一個物件。

示例

假設我們在資料庫中建立了一個名為 MyData 的表,其描述如下。

+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| Name    | varchar(255) | YES  |     | NULL    |       |
| Article | longtext     | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

並且,我們已將大量文字資料插入其中,名稱為 JavaFX。以下程式使用 getString() 和 getCharacterStream() 方法檢索 MyData 表的內容。

import java.io.FileWriter;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class RetrievingClob_CharStream {
   public static void main(String args[]) throws Exception {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql:///sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Creating a Statement object
      Statement stmt = con.createStatement();
      //retrieving the data
      ResultSet rs = stmt.executeQuery("select * from MyData");
      int j = 0;
      System.out.println("Contents of the table are: ");
      while(rs.next()) {
         System.out.println(rs.getString("Name"));
         Clob clob = rs.getClob("Article");
         Reader r = clob.getCharacterStream();
         String filePath = "E:\Data\clob_output"+j+".txt";
         FileWriter writer = new FileWriter(filePath);
         int i;
         while ((i=r.read())!=-1) {
            writer.write(i);
         }
         writer.close();
         System.out.println(filePath);
         j++;
      }
   }  
}

輸出

Connection established......
Contents of the table......
JavaFX
E:\Data\clob_output0.txt

如果您觀察獲得的路徑中的檔案,您可以在下面看到從表中檢索到的 Clob 的內容

更新於: 2019年7月30日

544 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告