Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was ist der JDBC-Blob-Datentyp? Wie speichert und liest man die darin enthaltenen Daten?

PHPz
Freigeben: 2023-09-14 18:57:10
nach vorne
957 Leute haben es durchsucht

什么是 JDBC Blob 数据类型?如何存储和读取其中的数据?

BLOB ist ein binäres großes Objekt, das eine variable Datenmenge mit einer maximalen Länge von 65535 Zeichen speichern kann.

Sie werden zum Speichern großer Mengen binärer Daten wie Bilder oder anderer Datentypen verwendet. dokumentieren. Als TEXT definierte Felder enthalten ebenfalls große Datenmengen. Der Unterschied zwischen beiden besteht darin, dass beim Sortieren und Vergleichen gespeicherter Daten in BLOBs die Groß-/Kleinschreibung beachtet wird, in TEXT-Feldern jedoch nicht. Sie haben die Länge nicht mit BLOB oder TEXT angegeben.

Blob in Datenbank speichern

Um den Blob-Datentyp in der Datenbank zu speichern, befolgen Sie die folgenden Schritte mit dem JDBC-Programm

Schritt 1: Mit der Datenbank verbinden

Sie können die Methode DriverManagergetConnection() verwenden, um eine Verbindung zur Datenbank herzustellen

indem Sie die MySQL-URL (jdbc:mysql://localhost/sampleDB) (wobei exampleDB der Datenbankname ist), den Benutzernamen und das Passwort als Parameter an die Methode getConnection() übergeben.

String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
Nach dem Login kopieren

Schritt 2: Erstellen Sie eine vorbereitete Anweisung

Verwenden Sie die Methode prepareStatement() der Schnittstelle Connection, um ein PreparedStatement-Objekt zu erstellen. Übergeben Sie die Einfügungsabfrage (mit Platzhaltern) als Parameter an diese Methode.

PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
Nach dem Login kopieren

Schritt 3: Wert für den Platzhalter festlegen

Verwenden Sie die Setter-Methode der Schnittstelle PreparedStatement, um den Wert für den Platzhalter festzulegen. Wählen Sie eine Methode basierend auf dem Datentyp der Spalte. Wenn die Spalte beispielsweise vom Typ VARCHAR ist, verwenden Sie die Methode setString(); wenn die Spalte vom Typ INT ist, können Sie die Methode setInt() verwenden.

Wenn die Spalte vom Typ Blob ist, können Sie den Wert dafür mit der Methode setBinaryStream() oder setBlob() festlegen. Diesen Methoden werden eine Ganzzahlvariable, die den Parameterindex darstellt, und ein Objekt der InputStream-Klasse als Parameter übergeben.

pstmt.setString(1, "sample image");
//Inserting Blob type
InputStream in = new FileInputStream("E:\images\cat.jpg");
pstmt.setBlob(2, in);
Nach dem Login kopieren

Schritt 4: Anweisung ausführen

Verwenden Sie die Methode execute() der Schnittstelle PreparedStatement, um das oben erstellte PreparedStatement-Objekt auszuführen.

Blobs aus der Datenbank abrufen

Die getBlob()-Methode der ResultSet-Schnittstelle akzeptiert eine Ganzzahl, die den Index der Spalte darstellt (oder einen Zeichenfolgenwert, der den Spaltennamen darstellt), ruft den Wert der angegebenen Spalte ab und gibt ihn zurück die Form eines Blob-Objekts. Die

getBytes()

-Methode der

while(rs.next()) {
   rs.getString("Name");
   rs.getString("Type");
   Blob blob = rs.getBlob("Logo");
}
Nach dem Login kopieren
Blob-Schnittstelle ruft den Inhalt des aktuellen Blob-Objekts ab und gibt ihn als Byte-Array zurück.

Mit der Methode getBlob() können Sie den Inhalt des Blobs in ein Byte-Array übertragen und mit der Methode write() ein Bildobjekt FileOutputStream erstellen.

byte byteArray[] = blob.getBytes(1,(int)blob.length());
FileOutputStream outPutStream = new FileOutputStream("path");
outPutStream.write(byteArray);
Nach dem Login kopieren

Beispiel

Das folgende Beispiel erstellt eine Tabelle vom Blob-Datentyp in einer MySQL-Datenbank und fügt ein Bild darin ein. Rufen Sie es ab und speichern Sie es im lokalen Dateisystem.

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class BlobExample {
   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 a table
      Statement stmt = con.createStatement();
      stmt.execute("CREATE TABLE SampleTable( Name VARCHAR(255), Image BLOB)");
      System.out.println("Table Created");
      //Inserting values
      String query = "INSERT INTO SampleTable(Name,image) VALUES (?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setString(1, "sample image");
      FileInputStream fin = new FileInputStream("E:\images\cat.jpg");
      pstmt.setBlob(2, fin);
      pstmt.execute();
      //Retrieving the data
      ResultSet rs = stmt.executeQuery("select * from SampleTable");
      int i = 1;
      System.out.println("Contents of the table are: ");
      while(rs.next()) {
         System.out.println(rs.getString("Name"));
         Blob blob = rs.getBlob("Image");
         byte byteArray[] = blob.getBytes(1,(int)blob.length());
         FileOutputStream outPutStream = new
         FileOutputStream("E:\images\blob_output"+i+".jpg");
         outPutStream.write(byteArray);
         System.out.println("E:\images\blob_output"+i+".jpg");
         System.out.println();
         i++;
      }
   }
}
Nach dem Login kopieren

Ausgabe

Connection established......
Table Created
Contents of the table are:
sample image
E:\images\blob_output1.jpg
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas ist der JDBC-Blob-Datentyp? Wie speichert und liest man die darin enthaltenen Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!