Kaedah
PreparedStatementantaramuka setBinaryStream() menerima integer yang mewakili indeks parameter dan objek InputStream, dan menetapkan parameter kepada objek InputStream yang diberikan. Anda boleh menggunakan kaedah ini bila-bila masa anda perlu menghantar nilai binari yang sangat besar.
Pangkalan data SQL menyediakan jenis data yang dipanggil Blob (Binary Large Object) di mana anda boleh menyimpan data binari yang besar seperti imej.
Jika anda perlu menyimpan imej dalam pangkalan data menggunakan program JDBC, buat jadual jenis data Blob seperti ditunjukkan di bawah:
CREATE TABLE Tutorial(Name VARCHAR(255), Type INT NOT NULL, Logo BLOB);
Sekarang, sambung ke pangkalan data menggunakan JDBC dan sediakan PreparedStatement Sisipkan nilai ke dalam jadual yang dibuat di atas:
String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(query);
Tetapkan nilai pemegang tempat menggunakan kaedah penetap antara muka PreparedStatement dan tetapkan nilai jenis data Blob menggunakan kaedah setBinaryStream().
FileInputStream fin = new FileInputStream("javafx_logo.jpg"); pstmt.setBinaryStream(3, fin);
Contoh berikut menunjukkan cara memasukkan imej ke dalam pangkalan data MySQL menggunakan program JDBC. Di sini, kami mencipta jadual yang mengandungi jenis data Blob, memasukkan nilai ke dalam jadual (objek BinaryStream jenis Blob), dan mendapatkan semula kandungan jadual.
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class InsertingImageToDatabase { 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......"); //Creating the Statement Statement stmt = con.createStatement(); //Executing the statement String createTable = "CREATE TABLE Tutorial( " + "Name VARCHAR(255), " + "Type VARCHAR(50), " + "Logo BLOB)"; stmt.execute(createTable); //Inserting values String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1, "JavaFX"); pstmt.setString(2, "Java_library"); FileInputStream fin = new FileInputStream("E:\images\javafx_logo.jpg"); pstmt.setBinaryStream(3, fin); pstmt.execute(); pstmt.setString(1, "CoffeeScript"); pstmt.setString(2, "scripting Language"); fin = new FileInputStream("E:\images\coffeescript_logo.jpg"); pstmt.setBinaryStream(3, fin); pstmt.execute(); pstmt.setString(1, "Cassandra"); pstmt.setString(2, "NoSQL database"); fin = new FileInputStream("E:\images\cassandra_logo.jpg"); pstmt.setBinaryStream(3, fin); pstmt.execute(); System.out.println("Data inserted"); ResultSet rs = stmt.executeQuery("Select *from Tutorial"); while(rs.next()) { System.out.print("Name: "+rs.getString("Name")+", "); System.out.print("Tutorial Type: "+rs.getString("Type")+", "); System.out.print("Logo: "+rs.getBlob("Logo")); System.out.println(); } } }
Connection established...... Data inserted Name: JavaFX, Tutorial Type: Java_library, Logo: com.mysql.jdbc.Blob@7dc5e7b4 Name: CoffeeScript, Tutorial Type: scripting Language, Logo: com.mysql.jdbc.Blob@1ee0005 Name: Cassandra, Tutorial Type: NoSQL database, Logo: com.mysql.jdbc.Blob@75a1cd57
Nota: Anda hanya boleh menyimpan dan mendapatkan semula imej jenis .gif atau .jpeg atau .png menggunakan program JDBC.
Atas ialah kandungan terperinci Bagaimana untuk memasukkan imej ke dalam pangkalan data menggunakan JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!