Maison  >  Article  >  base de données  >  Comment insérer une image dans une base de données à l'aide de JDBC ?

Comment insérer une image dans une base de données à l'aide de JDBC ?

WBOY
WBOYavant
2023-08-29 14:05:02799parcourir

La méthode

setBinaryStream()如何使用 JDBC 将图像插入数据库? de l'interface

PreparedStatementaccepte un entier représentant l'index du paramètre et un objet InputStream, et définit le paramètre sur l'objet InputStream donné. Vous pouvez utiliser cette méthode chaque fois que vous devez envoyer de très grandes valeurs binaires.

La base de données SQL fournit un type de données appelé Blob (Binary Large Object) dans lequel vous pouvez stocker des données binaires volumineuses telles que des images.

Stockez les images à l'aide de JDBC

Si vous devez stocker des images dans la base de données à l'aide du programme JDBC, créez une table de type de données Blob comme indiqué ci-dessous :

CREATE TABLE Tutorial(Name VARCHAR(255), Type INT NOT NULL, Logo BLOB);

Maintenant, connectez-vous à la base de données à l'aide de JDBC et préparez un PreparedStatement Insérez valeurs dans le tableau créé ci-dessus :

String query = "INSERT INTO Tutorial(Name, Type, Logo) VALUES (?, ?, ?)";
PreparedStatement pstmt = con.prepareStatement(query);

Définissez la valeur de l'espace réservé à l'aide de la méthode setter de l'interface PreparedStatement et définissez la valeur du type de données Blob à l'aide de la méthode setBinaryStream().

FileInputStream fin = new FileInputStream("javafx_logo.jpg");
pstmt.setBinaryStream(3, fin);

Exemple

L'exemple suivant montre comment insérer une image dans une base de données MySQL à l'aide d'un programme JDBC. Ici, nous créons une table contenant un type de données Blob, insérons des valeurs dans la table (un objet BinaryStream de type Blob) et récupérons le contenu de la table.

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

Sortie

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

Remarque : Vous ne pouvez stocker et récupérer des images de type .gif ou .jpeg ou .png qu'à l'aide de programmes JDBC.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer