编写一个 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 的内容

更新于: 2019年7月30日

544 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告