1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
   |  
/*
 * AjouterImage.java
 *
 * Created on 16 ديسمبر, 2007, 07:35 م
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
 
package test_bdm;
 
/**
 *
 * @author ammoula
 */
// Importation des packages importants
import  java.sql.*; // Pour la connexion avec Oracle
import	java.io.*; // Pour les entrée sorties
import	oracle.jdbc.*;  // Pour les pilotes Oracle
import	oracle.sql.*;  // Pour les spécificités SQL d'Oracle 
import	oracle.ord.im.OrdImage;   // Pour la classe OrdImage
import	oracle.ord.im.OrdImageSignature;  // Pour la classe OrdImageSignature
 
 
public class AjouterImage {
 
    public static void main(String[] args) {
 
        try {
 
// Etape 1 : Création de la connexion avec la base
 
    // Enregistrement du pilote Oracle
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
 
    // Ouverture de la connexion avec la BD
    Connection conn = DriverManager.getConnection(
    "jdbc:oracle:thin:@host:1521:mabase", 	// url de la base
    "user", 					// utilisateur
    "password"); 					// mot de passe
 
 
 
 // Etape 2 : Mise à false de l'autocommit
 
    conn.setAutoCommit(false);
 
// Etape 3 : Initialisation de l'attribut ORDImage 
 
    // Ecriture de la requête SQL
    String sql = "UPDATE MaTable SET image=ORDSYS.ORDImage.init() WHERE id=1";
 
    // Création d'une instance d'un Objet Statement
    Statement stmt = conn.createStatement();
 
    // Execution de la requête
    stmt.execute(sql);
 
// Etape 4 : Récupération du descripteur
 
    // Ecriture de la requête SQL
    String sql2 = "SELECT image FROM MaTable WHERE id=1 FOR UPDATE";
 
    // Execution de la requête et récupération du résultat
    OracleResultSet rset=(OracleResultSet) stmt.executeQuery(sql2);
 
    // S'il y a un résultat
    if( rset.next()) {
 
    // Récupération du descripteur d'OrdImage
    OrdImage imgObj = (OrdImage) rset.getCustomDatum(1, OrdImage.getFactory() );
 
// Etape 5 : Envoi de l'image
 
        // Création d'un bloc try{}catch pour l'exception d'entrée/sortie
        try{
            // Envoi de l'image dans l'attribut localData du type ORDImage                     
            imgObj.loadDataFromFile("c:\\image.jpg");                      
        }
        catch (IOException e){ e.printStackTrace(); }
 
// Etape 6 : Génération des métas données
 
// Génération des métas données (propriétés de l'image)
            imgObj.setProperties();
 
        // Vérification de la génération des propriétés
        if(imgObj.checkProperties()) {
 
            // Ecriture de la requête SQL pour mettre à jour l'attribut
            String sql3 = "UPDATE maTable SET image=? WHERE id=1";
 
            // Création d'une instance de l'objet OraclePreparedStatement
            OraclePreparedStatement pstmt = (OraclePreparedStatement) conn.prepareStatement(sql3);
 
            // Ajout de l'instance d'OrdImage dans la requête
            pstmt.setCustomDatum(1, imgObj);
 
            // Execution de la requête
            pstmt.execute();
            // Fermeture
            pstmt.close();
 
// Etape 7 : Validation manuel de la base
            conn.commit();
 
        }
    }
// Etape 8 : Fermeture des connexions et remise à true            
            stmt.close();
 
            // Remise à true de l'auto commit
            conn.setAutoCommit(true);
 
            // fermeture de la connexion             
            conn.close();             
        } catch(SQLException e) { e.printStackTrace(); }
    }
} // fin | 
Partager