Cách đọc dữ liệu blob trong mysql bằng java
Đọc dữ liệu BLOB từ cơ sở dữ liệu Show
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ạiBLOB 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ệuPhươ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 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à 3 vào bảng 2. Loại dữ liệu của cột này sẽ là 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 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 3 của bảng 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 MySQLCá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 9 mới
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 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à 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 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 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 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 2 cho bản ghi có id 122. Đọc dữ liệu BLOB từ cơ sở dữ liệu MySQLQuá 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 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 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à 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 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 |