Cách đọc dữ liệu blob trong mysql bằng java

Đọc dữ liệu BLOB từ cơ sở dữ liệu

  
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Main {
  static String url = "jdbc:oracle:thin:@localhost:1521:javaDemo";
  static String username = "username";
  static String password = "welcome";
  public static void main(String[] args) throws Exception {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection(url, username, password);

    String sql = "SELECT name, description, image FROM pictures ";
    PreparedStatement stmt = conn.prepareStatement(sql);
    ResultSet resultSet = stmt.executeQuery();
    while (resultSet.next()) {
      String name = resultSet.getString(1);
      String description = resultSet.getString(2);
      File image = new File("D:\\java.gif");
      FileOutputStream fos = new FileOutputStream(image);

      byte[] buffer = new byte[1];
      InputStream is = resultSet.getBinaryStream(3);
      while (is.read(buffer) > 0) {
        fos.write(buffer);
      }
      fos.close();
    }
    conn.close();
  }
}

   
    
  

Ví dụ liên quan trong cùng thể loại

BLOB là đối tượng lớn nhị phân có thể chứa một lượng dữ liệu thay đổi với độ dài tối đa là 65535 ký tự

Chúng được sử dụng để lưu trữ một lượng lớn dữ liệu nhị phân, chẳng hạn như hình ảnh hoặc các loại tệp khác. Các trường được định nghĩa là TEXT cũng chứa một lượng lớn dữ liệu. Sự khác biệt giữa hai loại này là việc sắp xếp và so sánh trên dữ liệu được lưu trữ phân biệt chữ hoa chữ thường trên BLOB và không phân biệt chữ hoa chữ thường trong các trường TEXT. Bạn không chỉ định độ dài với BLOB hoặc TEXT

Lưu trữ blob vào cơ sở dữ liệu

Để lưu trữ kiểu dữ liệu Blob vào cơ sở dữ liệu, sử dụng chương trình JDBC, hãy làm theo các bước dưới đây

Bước 1. Kết nối với cơ sở dữ liệu

Bạn có thể kết nối với cơ sở dữ liệu bằng phương thức getConnection() của lớp DriverManager

Kết nối với cơ sở dữ liệu MySQL bằng cách chuyển URL MySQL là jdbc. mysql. //localhost/sampleDB (trong đó sampleDB là tên cơ sở dữ liệu), tên người dùng và mật khẩu làm tham số cho phương thức getConnection()

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");

Bước 2. Tạo một tuyên bố đã chuẩn bị

Tạo một đối tượng PreparedStatement bằng cách sử dụng phương thức chuẩn bị () của giao diện Kết nối. Đối với phương thức này, hãy chuyển truy vấn chèn (có trình giữ chỗ) dưới dạng tham số

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");

Bước 3. Đặt giá trị cho người giữ chỗ

Đặt các giá trị cho các trình giữ chỗ bằng cách sử dụng các phương thức setter của giao diện PreparedStatement  . Chọn các phương thức theo kiểu dữ liệu của cột. Ví dụ: nếu cột thuộc loại VARCHAR, hãy sử dụng phương thức setString() và nếu cột thuộc loại INT, bạn có thể sử dụng phương thức setInt()

Và nếu nó thuộc loại Blob, bạn có thể đặt giá trị cho nó bằng các phương thức setBinaryStream() hoặc setBlob(). Đối với các phương thức này, hãy truyền một biến số nguyên đại diện cho chỉ mục tham số và một đối tượng của lớp InputStream làm tham số

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);

Bước 4. Thực hiện tuyên bố

Thực thi đối tượng PreparedStatement đã tạo ở trên bằng cách sử dụng phương thức exec() của giao diện PreparedStatement

Lấy blob từ cơ sở dữ liệu

Phương thức getBlob() của giao diện ResultSet chấp nhận một số nguyên đại diện cho chỉ mục của cột (hoặc, giá trị Chuỗi đại diện cho tên của cột) và truy xuất giá trị tại cột đã chỉ định và trả về dưới dạng đối tượng Blob

while(rs.next()) {
   rs.getString("Name");
   rs.getString("Type");
   Blob blob = rs.getBlob("Logo");
}

Phương thức getBytes() của Giao diện Blob truy xuất nội dung của đối tượng Blob hiện tại và trả về dưới dạng một mảng byte

Sử dụng phương thức getBlob(), bạn có thể đưa nội dung của blob vào một mảng byte và tạo một hình ảnh bằng phương thức write() của đối tượng FileOutputStream

byte byteArray[] = blob.getBytes(1,(int)blob.length());
FileOutputStream outPutStream = new FileOutputStream("path");
outPutStream.write(byteArray);

Ví dụ

Ví dụ sau tạo một bảng trong cơ sở dữ liệu MySQL với kiểu dữ liệu blob, chèn hình ảnh vào đó. Truy xuất lại và lưu trữ trong hệ thống tệp cục bộ

Chúng tôi sẽ sử dụng bảng

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
2 trong cơ sở dữ liệu mẫu mysqljdbc. Để minh họa, chúng tôi sẽ thêm một cột nữa có tên là

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
3 vào bảng

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
2. Loại dữ liệu của cột này sẽ là 

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
5 có thể chứa tối đa 16 MB

Câu lệnh ALTER TABLE sau đây thêm cột sơ yếu lý lịch vào bảng

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
2

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
1

Chúng tôi sẽ sử dụng một sơ yếu lý lịch mẫu ở định dạng PDF và tải tệp này vào cột

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
3 của bảng

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
2 sau. Các bạn có thể tải file PDF mẫu về thực hành qua link sau

Tải xuống Sơ yếu lý lịch của John Doe ở định dạng PDF

Viết dữ liệu BLOB vào cơ sở dữ liệu MySQL

Các bước ghi dữ liệu BLOB vào cơ sở dữ liệu MySQL như sau

Đầu tiên, mở một kết nối mới tới cơ sở dữ liệu bằng cách tạo một đối tượng

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
9 mới

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

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
60 từ đối tượng

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
9

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
6

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

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
62 và gọi phương thức
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
63 để đặt tham số cho
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
60

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
2

Sau đó, gọi phương thức

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
65 của đối tượng
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
60

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
5

Cuối cùng, đóng các đối tượng

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
60 và

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
9 bằng cách gọi phương thức
String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
69

Để đơn giản hóa quy trình tạo

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
9, chúng tôi sử dụng lớp
PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
21 mà chúng tôi đã phát triển trong hướng dẫn trước để mở một kết nối mới. Ví dụ đầy đủ về ghi dữ liệu BLOB vào cơ sở dữ liệu MySQL như sau

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);
1

Hãy chạy chương trình

Cách đọc dữ liệu blob trong mysql bằng java
Cách đọc dữ liệu blob trong mysql bằng java

Bây giờ, chúng tôi kiểm tra bảng _____62 cho ứng viên có id 122

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);
3
Cách đọc dữ liệu blob trong mysql bằng java
Cách đọc dữ liệu blob trong mysql bằng java

Như 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ảng

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
2 cho bản ghi có id 122.

Đọ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 ghi BLOB ngoại trừ phần chúng ta ghi 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

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);
5

Sau đó, xây dựng một câu lệnh SELECT và tạo một

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
60 từ đối tượng

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
9

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);
8

Tiếp theo, đặt tham số và thực hiện truy vấn

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);
9

Sau đó, lấy dữ liệu BLOB từ

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
26 và ghi nó vào một tệp

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
0

Cuối cùng, gọi phương thức 

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
69 của đối tượng
PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
28 và

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
9. Nếu bạn sử dụng câu lệnh dùng thử tài nguyên, bạn không cần phải làm điều đó một cách rõ ràng

Ví dụ sau minh họa cách đọc dữ liệu BLOB từ cơ sở dữ liệu MySQL

Connection conn = DriverManager.getConnection(url,username,password);

Code language: Java (java)
1

Sau khi chạy chương trình, duyệt thư mục project các bạn sẽ thấy có 1 file mới tên là

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
50 được tạo

Làm cách nào để truy xuất dữ liệu blob từ cơ sở dữ liệu MySQL trong Java?

Đang lấy blob từ cơ sở dữ liệu . Sử dụng phương thức getBlob(), bạn có thể đưa nội dung của blob vào một mảng byte và tạo một hình ảnh bằng phương thức write() của đối tượng FileOutputStream. The getBytes() method of the Blob Interface retrieves the contents of the current Blob object and returns as a byte array. Using the getBlob() method you can get the contents of the blob in to a byte array and create an image using the write() method of the FileOutputStream object.

Làm cách nào để đọc SQL BLOB trong Java?

Để đọc từ BLOB , hãy sử dụng phương thức getBinaryStream() của một nhà tiên tri. sql. Đối tượng BLOB để truy xuất toàn bộ BLOB dưới dạng luồng đầu vào . Điều này trả về một java.

Làm cách nào để đọc BLOB trong MySQL?

Đọc dữ liệu BLOB từ cơ sở dữ liệu MySQL . open a new connection to the database. Sau đó, xây dựng một câu lệnh SELECT và tạo một PreparedStatement từ đối tượng Connection. Cuối cùng, gọi các phương thức close() của các đối tượng PreparedStatement và Connection.

Làm cách nào để đọc dữ liệu blob của Oracle trong Java?

Để đọc từ BLOB, hãy sử dụng phương thức getBinaryStream() của một nhà tiên tri. sql. đối tượng BLOB để truy xuất toàn bộ BLOB dưới dạng luồng đầu vào. Điều này trả về một java