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

Làm cách nào để chúng ta chèn / lưu trữ một tệp vào cơ sở dữ liệu MySQL bằng JDBC?

Nói chung, nội dung của tệp được lưu trữ trong Clob (TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT) trong cơ sở dữ liệu MySQL.

JDBC cung cấp hỗ trợ cho kiểu dữ liệu Clob, để lưu trữ nội dung của tệp vào bảng trong cơ sở dữ liệu.

setCharacterStream () phương pháp của Câu lệnh chuẩn bị interface chấp nhận một số nguyên đại diện cho chỉ mục của tham số và đối tượng Reader làm tham số.

Và đặt nội dung của đối tượng trình đọc đã cho (tệp) làm giá trị cho tham số (trình giữ chỗ) trong chỉ mục được chỉ định.

Bất cứ khi nào bạn cần gửi giá trị văn bản rất lớn, bạn có thể sử dụng phương pháp này.

Lưu trữ tệp văn bản bằng JDBC:

Nếu bạn cần lưu trữ tệp trong cơ sở dữ liệu bằng cách sử dụng chương trình JDBC, hãy tạo bảng với kiểu dữ liệu Clob (TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT) như hình dưới đây:

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

Bây giờ, bằng cách sử dụng JDBC, hãy kết nối với cơ sở dữ liệu và chuẩn bị Chuẩn bị sẵn sàng để chèn các giá trị vào bảng đã tạo ở trên:

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

Đặt giá trị cho trình giữ chỗ bằng cách sử dụng các phương thức setter của giao diện PreparedStatement và cho giá trị đặt kiểu dữ liệu Clob bằng cách sử dụng setCharacterStream () phương pháp.

Ví dụ

Sau đây là một ví dụ minh họa cách chèn filein vào cơ sở dữ liệu MySQL bằng chương trình JDBC. Ở đây, chúng tôi đã tạo một bảng với kiểu dữ liệu Clob, đã chèn các giá trị vào đó.

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://localhost/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......");
   }
}

Đầu ra

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

Sử dụng MySQL workbench, bạn có thể xuất nội dung của bảng sang các tệp khác nhau như tệp html, tệp văn bản tệp .csv, v.v. Nếu bạn xuất nội dung của bảng sau khi chèn dữ liệu sang tệp HTTML, đầu ra của nó sẽ giống như sau:

Làm cách nào để chúng ta chèn / lưu trữ một tệp vào cơ sở dữ liệu MySQL bằng JDBC?