编写一个 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://127.0.0.1/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 的内容
广告