Tóm tắt: & NBSP; Hướng dẫn này chỉ cho bạn cách viết và đọc dữ liệu blob MySQL bằng API JDBC.: this tutorial shows you how to write and read MySQL BLOB data using JDBC API.
Chúng tôi sẽ sử dụng bảng
2 trong cơ sở dữ liệu mẫu MySQLJDBC. Để trình diễn, chúng tôi sẽ thêm một cột có tênCode language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
3 vào bảngCode language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
2. Kiểu dữ liệu của cột này sẽ là & nbsp;Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
5 có thể giữ tới 16MB.Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Câu lệnh bảng thay đổi sau đây thêm cột tiếp tục vào bảng
2.Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Code language: SQL [Structured Query Language] [sql]
ALTER TABLE candidates ADD COLUMN resume LONGBLOB NULL AFTER email;
Chúng tôi sẽ sử dụng sơ yếu lý lịch mẫu ở định dạng PDF và tải tệp này vào cột
3 của bảngCode language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
2 sau. Bạn có thể tải xuống tệp PDF mẫu để thực hành thông qua liên kết sau:Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Tải xuống John Doe Resume ở định dạng PDF
Viết dữ liệu Blob vào cơ sở dữ liệu MySQL
Các bước để viết dữ liệu Blob vào cơ sở dữ liệu MySQL như sau:
Đầu tiên, hãy mở một kết nối mới đến cơ sở dữ liệu bằng cách tạo một đối tượng
9 mới.Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Connection conn = DriverManager.getConnection[url,username,password];
Code language: Java [java]
Sau đó, xây dựng một câu lệnh cập nhật và tạo một
0 từ đối tượngCode language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
9.Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Code language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
Tiếp theo, đọc dữ liệu từ tệp sơ yếu lý lịch mẫu bằng cách sử dụng phương thức
2 và gọiCode language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
3 để đặt tham số choCode language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
0.Code language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
Code language: Java [java]
// read the file File file = new File[filename]; FileInputStream input = new FileInputStream[file]; // set parameters pstmt.setBinaryStream[1, input]; pstmt.setInt[2, candidateId];
Sau đó, hãy gọi phương thức
5 của đối tượngCode language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
0.Code language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
Code language: Java [java]
pstmt.executeUpdate[];
Cuối cùng, đóng các đối tượng
0 vàCode language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
9 bằng cách gọi các phương thứcCode language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
9.Code language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
Để đơn giản hóa quy trình tạo
9, chúng tôi sử dụng lớpCode language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
1 mà chúng tôi đã phát triển trong hướng dẫn trước đây để mở kết nối mới. Ví dụ hoàn chỉnh về việc viết dữ liệu blob vào cơ sở dữ liệu MySQL như sau:Code language: Java [java]
// read the file File file = new File[filename]; FileInputStream input = new FileInputStream[file]; // set parameters pstmt.setBinaryStream[1, input]; pstmt.setInt[2, candidateId];
Code language: Java [java]
package org.mysqltutorial; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; /** * * @author mysqltutorial.org */ public class Main { /** * Update resume for a specific candidate * * @param candidateId * @param filename */ public static void writeBlob[int candidateId, String filename] { // update sql String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; try [Connection conn = MySQLJDBCUtil.getConnection[]; PreparedStatement pstmt = conn.prepareStatement[updateSQL]] { // read the file File file = new File[filename]; FileInputStream input = new FileInputStream[file]; // set parameters pstmt.setBinaryStream[1, input]; pstmt.setInt[2, candidateId]; // store the resume file in database System.out.println["Reading file " + file.getAbsolutePath[]]; System.out.println["Store file in the database."]; pstmt.executeUpdate[]; } catch [SQLException | FileNotFoundException e] { System.out.println[e.getMessage[]]; } } /** * @param args the command line arguments */ public static void main[String[] args] { writeBlob[122, "johndoe_resume.pdf"]; } }
Hãy để chạy chương trình.
Bây giờ chúng tôi kiểm tra bảng & nbsp; ________ 12 cho ứng viên có ID 122.
As Bạn thấy, chúng tôi có dữ liệu Blob được cập nhật trong cột Sơ yếu lý lịch của bảngCode language: SQL [Structured Query Language] [sql]
SELECT * FROM candidates WHERE id = 122;
2 để ghi lại với ID 122.Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
As you see, we have BLOB data updated in the resume column of the
2 table for record with id 122.Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Đọc dữ liệu Blob từ cơ sở dữ liệu MySQL
Quá trình đọc dữ liệu blob từ cơ sở dữ liệu tương tự như quá trình viết blob ngoại trừ phần chúng tôi viết dữ liệu blob vào tệp.
Đầu tiên, mở một kết nối mới đến cơ sở dữ liệu.
Code language: Java [java]
Connection conn = MySQLJDBCUtil.getConnection[dbURL,username,password];
Sau đó, xây dựng một câu lệnh Chọn và tạo một
0 từ đối tượngCode language: Java [java]
String updateSQL = "UPDATE candidates " + "SET resume = ? " + "WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[updateSQL];
9.Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
String selectSQL = "SELECT resume FROM candidates WHERE id=?"; PreparedStatement pstmt = conn.prepareStatement[selectSQL];
Code language: Java [java]
Tiếp theo, đặt các tham số và thực hiện truy vấn:
Code language: Java [java]
pstmt.setInt[1, candidateId]; ResultSet rs = pstmt.executeQuery[];
Sau đó, lấy dữ liệu blob từ
6 và ghi nó vào một tệp:Code language: Java [java]
// read the file File file = new File[filename]; FileInputStream input = new FileInputStream[file]; // set parameters pstmt.setBinaryStream[1, input]; pstmt.setInt[2, candidateId];
0Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Cuối cùng, hãy gọi & nbsp; ________ 29 Phương thức & nbsp; của các đối tượng
8 vàCode language: Java [java]
// read the file File file = new File[filename]; FileInputStream input = new FileInputStream[file]; // set parameters pstmt.setBinaryStream[1, input]; pstmt.setInt[2, candidateId];
9. Nếu bạn sử dụng câu lệnh Try-with-Resource, bạn không cần phải làm điều đó một cách rõ ràng.Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Ví dụ sau đây minh họa cách đọc dữ liệu Blob từ cơ sở dữ liệu MySQL.
1Code language: Java [java]
Connection conn = DriverManager.getConnection[url,username,password];
Sau khi chạy chương trình, duyệt dự án thư mục, bạn sẽ thấy rằng có một tệp mới có tên
0 được tạo.Code language: Java [java]
pstmt.executeUpdate[];
Trong hướng dẫn này, chúng tôi đã chỉ cho bạn cách làm việc với dữ liệu Blob MySQL từ JDBC.
Hướng dẫn này có hữu ích không?