Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để chèn một hình ảnh vào cơ sở dữ liệu MySQL bằng chương trình Java?

Để giữ một hình ảnh trong cơ sở dữ liệu MySQL, kiểu blob thường được sử dụng. Do đó, hãy đảm bảo rằng bạn có một bảng được tạo bằng kiểu dữ liệu blob với mô tả sau:

 + ------- + -------------- + ------ + ----- + --------- + ------- + | Lĩnh vực | Loại | Không có | Chìa khóa | Mặc định | Thêm | + ------- + -------------- + ------ + ----- + --------- + - ------ + | Tên | varchar (255) | CÓ | | NULL | || hình ảnh | đốm màu | CÓ | | NULL | | + ------- + -------------- + ------ + ----- + --------- + - ----- + 

Để chèn hình ảnh vào MySQL cơ sở dữ liệu, 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 cách sử dụng getConnection () phương thức 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 câu lệnh soạn sẵn

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

 PreparedStatement pstmt =con.prepareStatement ("CHÈN VÀO CÁC GIÁ TRỊ CỦA MyTable (?,?)"); 

Bước 3:Đặt giá trị cho trình giữ chỗ

Đặt các giá trị cho trình giữ chỗ bằng cách sử dụng các phương thức setter của Câu lệnh chuẩn bị giao diện. 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 setString () và nếu nó thuộc loại INT, bạn có thể sử dụng setInt () phương pháp.

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

 pstmt.setString (1, "ảnh mẫu"); // Chèn Blob typeInputStream vào =new FileInputStream ("E:\\ images \\ cat.jpg"); pstmt.setBlob (2, in);  

Bước 4:Thực hiện câu lệnh

Thực thi đối tượng PreparedStatement đã tạo ở trên bằng cách sử dụng execute () phương pháp của Câu lệnh chuẩn bị giao diện.

Ví dụ

 import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class InsertImageToMySqlDB {public static void main (String args [ ]) ném Exception {// Đăng ký trình điều khiển DriverManager.registerDriver (new com.mysql.jdbc.Driver ()); // Bắt kết nối String mysqlUrl ="jdbc:mysql:// localhost / sampleDB"; Kết nối con =DriverManager.getConnection (mysqlUrl, "root", "password"); System.out.println ("Kết nối được thiết lập ......"); PreparedStatement pstmt =con.prepareStatement ("CHÈN VÀO CÁC GIÁ TRỊ CỦA MyTable (?,?)"); pstmt.setString (1, "hình ảnh mẫu"); // Chèn kiểu Blob InputStream in =new FileInputStream ("E:\\ images \\ cat.jpg"); pstmt.setBlob (2, in); // Đang thực thi câu lệnh pstmt.execute (); System.out.println ("Đã chèn bản ghi ......"); }} 

Đầu ra

 Kết nối được thiết lập ...... Đã chèn bản ghi ......