MySQL 如何使用JDBC从数据库中检索文件?

MySQL 如何使用JDBC从数据库中检索文件?

ResultSet 接口提供了名为 getClob()getCharacterStream() 的方法来检索 Clob 数据类型,其中文件的内容通常存储在其中。

这些方法接受一个表示列的索引的整数(或表示列名的字符串值),并检索指定列处的值。

不同之处在于 getClob() 方法返回一个 Clob 对象,而 getCgaracterStream() 方法返回一个 Reader 对象,它包含 Clob 数据类型的内容。

阅读更多:MySQL 教程

示例

假设我们已经在数据库中创建了一个名为 Articles 的表,其描述如下。

+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| Name    | varchar(255) | YES  |     | NULL    |       |
| Article | longtext     | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

然后,我们向其中插入三篇文章,分别为 article 1,article2 和 article 3,如下所示:

MySQL 如何使用JDBC从数据库中检索文件?

示例

以下程序使用 getString() 和 getClob() 方法从表 Articles 中检索内容,并将其保存在指定的文件中。

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 RetrievingFileFromDatabase {
   public static void main(String args[]) throws Exception {
      //注册驱动程序
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //获取连接
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("连接已建立......");
      //创建 statement
      Statement stmt = con.createStatement();
      //检索数据
      ResultSet rs = stmt.executeQuery("select * from Articles");
      int j = 0;
      System.out.println("表的内容如下: ");
      while(rs.next()) {
         System.out.println(rs.getString("Name"));
         Clob clob = rs.getClob("Article");
         Reader reader = clob.getCharacterStream();
         String filePath = "E:\Data\clob_output"+j+".txt";
         FileWriter writer = new FileWriter(filePath);
         int i;
         while ((i = reader.read())!=-1) {
            writer.write(i);
         }
         writer.close();
         System.out.println(filePath);
         j++;
      }
   }
}

输出

连接已建立......
表的内容如下:
article1
E:\Data\clob_output0.txt
article2
E:\Data\clob_output1.txt
article3
E:\Data\clob_output2.txt

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程