Die Methode
setBinaryStream() der Schnittstelle
PreparedStatementinterface akzeptiert eine Ganzzahl, die den Parameterindex darstellt, und ein InputStream-Objekt und setzt den Parameter auf das angegebene InputStream-Objekt. Sie können diese Methode immer dann verwenden, wenn Sie sehr große Binärwerte senden müssen.
SQL-Datenbank bietet einen Datentyp namens Blob (Binary Large Object), in dem Sie große Binärdaten wie Bilder speichern können.
Wenn Sie Bilder mit dem JDBC-Programm in der Datenbank speichern müssen, erstellen Sie eine Tabelle mit dem Datentyp „Blob“ wie unten gezeigt:
CREATE TABLE Tutorial(Name VARCHAR(255), Type INT NOT NULL, Logo BLOB);
Stellen Sie jetzt mit JDBC eine Verbindung zur Datenbank her und bereiten Sie eine PreparedStatement-Einfügung vor Werte in die oben erstellte Tabelle einfügen:
String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(query);
Legen Sie den Wert des Platzhalters mit der Setter-Methode der PreparedStatement-Schnittstelle fest und legen Sie den Wert des Blob-Datentyps mit der setBinaryStream()-Methode fest.
FileInputStream fin = new FileInputStream("javafx_logo.jpg"); pstmt.setBinaryStream(3, fin);
Das folgende Beispiel zeigt, wie man mit einem JDBC-Programm ein Bild in eine MySQL-Datenbank einfügt. Hier erstellen wir eine Tabelle mit einem Blob-Datentyp, fügen Werte in die Tabelle ein (ein BinaryStream-Objekt vom Typ Blob) und rufen den Inhalt der Tabelle ab.
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
Hinweis: Sie können Bilder vom Typ .gif, .jpeg oder .png nur mit JDBC-Programmen speichern und abrufen.
Das obige ist der detaillierte Inhalt vonWie füge ich mit JDBC ein Bild in die Datenbank ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!