Récupérer un fichier à partir d’une base de données | JDBC – Java

L’interface ResultSet fournit les méthodes getClob() et getCharacterStream() pour récupérer le type de données Clob, dans lequel le contenu d’un fichier est généralement stocké.
 
 
Ces méthodes acceptent 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èrent la valeur dans la colonne spécifiée.

La différence est que la méthode getClob() renvoie un objet Clob et la méthode getCgaracterStream() renvoie un objet Reader qui contient le contenu du type de données Clob.

En supposant que nous ayons une table MySQL appelée ‘Articles’ qui est créée par le script SQL suivant:

CREATE TABLE Articles(
	ID NUMBER(3), 
	Paragraphe LONGTEXT
);

Nous pouvons remarquer que la colonne ‘Paragraphe’ a le type LONGTEXT – qui est l’un des quatre types de clob de MySQL:

  • TINYTEXT,
  • TEXT,
  • MEDIUMTEXT,
  • LONGTEXT

 
 

Exemple:

Le programme suivant récupère le contenu de la table ‘Articles’ à l’aide des méthodes getString() et getClob() et l’enregistre dans les fichiers spécifiés.

import java.sql.*;
import java.io.*;

public class Main {
   public static void main(String args[]) throws Exception {
      //Enregistrer le pilote
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Récupérer la connexion
      String url = "jdbc:mysql://localhost/test";
      Connection con = DriverManager.getConnection(url, "root", "");
      System.out.println("Connection établie...");
      //Créer un objet Statement
      Statement stmt = con.createStatement();
      //Récupération des données
      ResultSet res = stmt.executeQuery("SELECT * FROM articles");
      int i = 0;
      System.out.println("Le contenu de la table est: ");
      while(res.next()) {
         System.out.println(res.getInt("ID"));
         Clob c = res.getClob("Paragraphe");
         Reader reader = c.getCharacterStream();
         String file = "c:\\file"+i+".txt";
         FileWriter wr = new FileWriter(file);
         int i;
         while ((i = reader.read())!=-1) {
            wr.write(i);
         }
         wr.close();
         System.out.println(file);
         i++;
      }
   }
}

 
QCM Java - JDBC

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *