Heim >Datenbank >MySQL-Tutorial >Wie füge ich mit JDBC ein Bild in die Datenbank ein?

Wie füge ich mit JDBC ein Bild in die Datenbank ein?

WBOY
WBOYnach vorne
2023-08-29 14:05:02818Durchsuche

Die Methode

setBinaryStream()如何使用 JDBC 将图像插入数据库? 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.

Bilder mit JDBC speichern

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);

Beispiel

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();
      }
   }
}

Ausgabe

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen