Nội dung file thường lưu dưới kiểu Clob (TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT) trong MySQL.
JDBC hỗ trợ Clob, lưu nội dung file vào bảng database.
Phương thức setCharacterStream() của PreparedStatement nhận nguyên (chỉ số tham số) và Reader object, thiết lập nội dung reader (file) làm giá trị cho placeholder tại chỉ số đó. Dùng khi gửi text rất lớn.
Lưu file text bằng JDBC:
Tạo bảng với Clob datatype:
CREATE TABLE Articles(Name VARCHAR(255), Article LONGTEXT);
Kết nối JDBC, chuẩn bị PreparedStatement:
String query = "INSERT INTO Tutorial(Name, Article) VALUES (?,?)"; PreparedStatement pstmt = con.prepareStatement(query);
Thiết lập giá trị placeholder, với Clob dùng setCharacterStream().
Ví dụ
Ví dụ chèn file vào MySQL bằng JDBC. Tạo bảng Clob, chèn giá trị:
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 {
// Đăng ký Driver
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// Lấy kết nối
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("Kết nối thành công......");
// Chèn giá trị
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("Dữ liệu đã chèn......");
}
}
Kết quả
Kết nối thành công...... Dữ liệu đã chèn......
Dùng MySQL Workbench export nội dung bảng ra file HTML, CSV, text. Xuất ra HTML sau khi chèn:
