如何使用JDBC将文件插入/存储到MySQL数据库中?


通常,文件内容存储在MySQL数据库中的**Clob** (TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT) 数据类型下。

JDBC支持Clob数据类型,用于将文件内容存储到数据库中的表中。

**PreparedStatement** 接口的**setCharacterStream()** 方法接受一个表示参数索引的整数和一个Reader对象作为参数。

并将给定Reader对象(文件)的内容设置为指定索引中参数(占位符)的值。

当您需要发送非常大的文本值时,可以使用此方法。

使用JDBC存储文本文件

如果您需要使用JDBC程序将文件存储到数据库中,请创建具有Clob (TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT) 数据类型的表,如下所示:

CREATE TABLE Articles(Name VARCHAR(255), Article LONGTEXT);

现在,使用JDBC连接到数据库并准备一个**PreparedStatement** 来将值插入到上面创建的表中。

String query = "INSERT INTO Tutorial(Name, Article) VALUES (?,?)";PreparedStatement pstmt = con.prepareStatement(query);

使用PreparedStatement接口的setter方法设置占位符的值,对于Clob数据类型,使用**setCharacterStream()**方法设置值。

示例

以下示例演示如何使用JDBC程序将文件插入到MySQL数据库中。这里我们创建了一个具有Clob数据类型的表,并将值插入其中。

import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertingFileToDatabase {
   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......");
      //Inserting values
      String query = "INSERT INTO Articles(Name, Article) VALUES (?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "article1");
      FileReader reader = new FileReader("E:\data\article1.txt");
      pstmt.setCharacterStream(2, reader);
      pstmt.execute();
      pstmt.setString(1, "article2");
      reader = new FileReader("E:\data\article2.txt");
      pstmt.setCharacterStream(2, reader);
      pstmt.execute();
      pstmt.setString(1, "article3");
      reader = new FileReader("E:\data\article3.txt");
      pstmt.setCharacterStream(2, reader);
      pstmt.execute();
      System.out.println("Data inserted......");
   }
}

输出

Connection established......
Data inserted......

使用MySQL Workbench,您可以将表的内容导出到各种文件,例如html文件、.csv文件、文本文件等。如果您在将数据插入到HTML文件后导出表的内容,其输出将如下所示:

更新于:2019年7月30日

4K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告