Heim >Datenbank >MySQL-Tutorial >Was ist der JDBC-Blob-Datentyp? Wie speichert und liest man die darin enthaltenen Daten?
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.
Um den Blob-Datentyp in der Datenbank zu speichern, befolgen Sie die folgenden Schritte mit dem JDBC-Programm
Schritt 1: Mit der Datenbank verbindenSie 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");
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(?, ?)");
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);
Schritt 4: Anweisung ausführen
Verwenden Sie die Methode execute() der Schnittstelle PreparedStatement, um das oben erstellte PreparedStatement-Objekt auszuführen.
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");
}
Blob-Schnittstelle ruft den Inhalt des aktuellen Blob-Objekts ab und gibt ihn als Byte-Array zurück. p>
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);
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++; } } }
Connection established...... Table Created Contents of the table are: sample image E:\images\blob_output1.jpg
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!