Maison >base de données >tutoriel mysql >Quel est le type de données JDBC Blob ? Comment y stocker et lire les données ?
BLOB est un gros objet binaire qui peut contenir une quantité variable de données d'une longueur maximale de 65 535 caractères.
Ils sont utilisés pour stocker de grandes quantités de données binaires telles que des images ou d'autres types de données. document. Les champs définis comme TEXTE contiennent également de grandes quantités de données. La différence entre les deux réside dans le fait que le tri et les comparaisons des données stockées sont sensibles à la casse dans les BLOB mais pas dans les champs TEXTE. Vous n'avez pas spécifié la longueur en utilisant BLOB ou TEXT.
Pour stocker le type de données Blob dans la base de données, suivez les étapes ci-dessous à l'aide du programme JDBC
Étape 1 : Connectez-vous à la base de donnéesVous pouvez utiliser la méthode DriverManagergetConnection() Connectez-vous à la base de données
en passant l'URL MySQL (jdbc:mysql://localhost/sampleDB) (où exampleDB est le nom de la base de données), le nom d'utilisateur et le mot de passe comme paramètres à la méthode getConnection().
String mysqlUrl = "jdbc:mysql://localhost/sampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
Étape 2 : Créez une instruction préparée
Utilisez la méthode prepareStatement() de l'interface Connection pour créer un objet PreparedStatement. Transmettez la requête d'insertion (avec des espaces réservés) en tant que paramètre à cette méthode.
PreparedStatement pstmt = con.prepareStatement("INSERT INTO MyTableVALUES(?, ?)");
Étape 3 : Définir la valeur de l'espace réservé
Utilisez la méthode setter de l'interface PreparedStatement pour définir la valeur de l'espace réservé. Sélectionnez la méthode en fonction du type de données de la colonne. Par exemple, si la colonne est de type VARCHAR, utilisez la méthode setString() ; si la colonne est de type INT, vous pouvez utiliser la méthode setInt().
Si la colonne est de type Blob, vous pouvez définir sa valeur à l'aide de la méthode setBinaryStream() ou setBlob(). Ces méthodes reçoivent une variable entière représentant l'index du paramètre et un objet de la classe InputStream comme paramètres.
pstmt.setString(1, "sample image"); //Inserting Blob type InputStream in = new FileInputStream("E:\images\cat.jpg"); pstmt.setBlob(2, in);
Étape 4 : Exécuter l'instruction
Utilisez la méthode execute() de l'interface PreparedStatement pour exécuter l'objet PreparedStatement créé ci-dessus.
La méthode getBlob() de l'interface ResultSet accepte un entier représentant l'index de la colonne (ou une valeur de chaîne représentant le nom de la colonne), et récupère la valeur de la colonne spécifiée et la renvoie dans la forme d'un objet Blob . La méthode
getBytes() de l'interface while(rs.next()) {
rs.getString("Name");
rs.getString("Type");
Blob blob = rs.getBlob("Logo");
}
Blob récupère le contenu de l'objet Blob actuel et le renvoie sous forme de tableau d'octets. p>
En utilisant la méthode getBlob(), vous pouvez obtenir le contenu du blob dans un tableau d'octets et utiliser la méthode write() pour créer un objet image FileOutputStream.
byte byteArray[] = blob.getBytes(1,(int)blob.length()); FileOutputStream outPutStream = new FileOutputStream("path"); outPutStream.write(byteArray);
L'exemple suivant crée une table de type de données blob dans une base de données MySQL et y insère une image. Récupérez-le et stockez-le dans le système de fichiers local.
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!