Maison > base de données > tutoriel mysql > le corps du texte

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

WBOY
Libérer: 2023-08-29 14:05:02
avant
807 Les gens l'ont consulté

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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();
      }
   }
}
Copier après la connexion

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
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal