Interface ResultSet cung cấp getClob() truy xuất clob từ bảng. Ngoài ra còn có getCharacterStream().
Giống getClob(), phương thức này nhận nguyên (chỉ số cột) hoặc String (tên cột), lấy giá trị tại cột đó. Khác biệt: getCharacterStream() trả về đối tượng Reader class thay vì Clob object.
Ví dụ
Giả sử bảng MyData:
+---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | Name | varchar(255) | YES | | NULL | | | Article | longtext | YES | | NULL | | +---------+--------------+------+-----+---------+-------+
Đã chèn dữ liệu văn bản lớn tên JavaFX. Chương trình truy xuất dùng getString() và getCharacterStream():
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 {
// Đăng ký Driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// Lấy kết nối
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Kết nối thành công......");
// Tạo Statement
Statement stmt = con.createStatement();
// Truy xuất dữ liệu
ResultSet rs = stmt.executeQuery("select * from MyData");
int j = 0;
System.out.println("Nội dung bảng:");
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++;
}
}
}
Kết quả
Kết nối thành công...... Nội dung bảng...... JavaFX E:\Data\clob_output0.txt
Xem file tại đường dẫn nhận được, thấy nội dung Clob từ bảng:
