Giả sử chúng ta đã có một bảng có tên MyTable trong cơ sở dữ liệu với mô tả sau.
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | Name | varchar(255) | YES | | NULL | | | image | blob | YES | | NULL | | +-------+--------------+------+-----+---------+-------+
Nếu bạn cần chèn giá trị int vào kiểu dữ liệu blob bằng chương trình JDBC, bạn cần sử dụng các phương thức đặt dữ liệu luồng nhị phân. Giao diện PreparedStatement cung cấp các phương pháp sau để chèn hình ảnh vào bảng.
void setBinaryStream (int tham sốIndex, InputStream x) phương thức đặt dữ liệu trong luồng đầu vào nhất định (cho đến cuối tệp) dưới dạng giá trị cho tham số tại chỉ mục đã cho.
Các biến thể khác của phương pháp này là
-
void setBinaryStream (int tham sốIndex, InputStream x, int length)
-
void setBinaryStream (int parameterIndex, InputStream x, long length)
void setBlob (int parameterIndex, Blob x) phương thức đặt đối tượng blob đã cho làm giá trị cho tham số tại chỉ mục đã cho.
Các biến thể khác của phương pháp này là
-
void setBlob (int parameterIndex, InputStream inputStream)
-
void setBlob (int parameterIndex, InputStream inputStream, long length)
Bạn có thể đặt giá trị cho kiểu dữ liệu Blob bằng một trong hai phương pháp này.
Ví dụ
Ví dụ sau đặt giá trị cho kiểu dữ liệu Blob bằng phương thức setBinaryStream ().
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class IndertingValueForBlob { 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 MyTable(Name,image) VALUES (?, ?)"; PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1, "sample_image"); FileInputStream fin = new FileInputStream("E:\\images\\cat.jpg"); pstmt.setBinaryStream(2, fin); pstmt.execute(); System.out.println("Record inserted ....."); } }
Đầu ra
Connection established...... Record inserted ......
Nếu bạn cố gắng xem giá trị blob trong bản ghi bằng cách sử dụng bàn làm việc MySQL, bạn có thể thấy hình ảnh được chèn như hình dưới đây: