Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào chúng ta có thể lấy tệp từ cơ sở dữ liệu bằng JDBC?

Tập hợp kết quả giao diện cung cấp các phương thức có tên getClob () getCharacterStream () để truy xuất Clob kiểu dữ liệu, trong đó nội dung của tệp thường được lưu trữ.

Các phương thức này chấp nhận một số nguyên đại diện cho chỉ mục của cột (hoặc, một giá trị Chuỗi đại diện cho tên của cột) và truy xuất giá trị tại cột được chỉ định.

Sự khác biệt là phương thức getClob () trả về một đối tượng Clob và phương thức getCgaracterStream () trả về một đối tượng Reader chứa nội dung của kiểu dữ liệu Clob.

Ví dụ

Giả sử chúng ta đã tạo một bảng có tên Các bài báo trong cơ sở dữ liệu với mô tả sau.

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

Và, chúng tôi đã chèn ba bài báo vào trong đó với tên là bài báo 1, bài 2 và bài 3 như hình dưới đây:

Làm cách nào chúng ta có thể lấy tệp từ cơ sở dữ liệu bằng JDBC?

Ví dụ

Chương trình sau truy xuất nội dung của bảng Article bằng cách sử dụng các phương thức getString () và getClob () và lưu nó vào các tệp được chỉ định.

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 {
      //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 aStatement
      Statement stmt = con.createStatement();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from Articles");
      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 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++;
      }
   }
}

Đầu ra

Connection established......
Contents of the table are:
article1
E:\Data\clob_output0.txt
article2
E:\Data\clob_output1.txt
article3
E:\Data\clob_output2.txt