編寫一個 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 的內容

廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP