编写一个 JDBC 示例,使用 getCharacterStream() 方法从表中检索 Clob 值?
mysqlmysqli databasejdbcjava 8更新于 2025/5/13 17:48:17
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://localhost/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 的内容,如下所示:

有用资源
mysql 参考教程 - 该教程包含有关 mysql 的更多信息:https://www.cainiaomax.com/mysql/

