je suis en train de développer une application qui fait la recherche par contenu sous Oracle, J'ai installé Oracle 11g r2 et j'ai créé ma base de données.
Je me connecte à cette base avec eclipse à l'aide du driver JDBC et tout va bien.
Puis j'ai utilisé la classe "AjouterImage" et ça marche très bien mais lorsque je regarde dans la table elle est vide !
Pouvez-vous m'aider ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
// 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
import oracle.sqlj.runtime.*;
 
 
 
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.OracleDriver());
 
    // Ouverture de la connexion avec la BD
     Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:base","user","pwd"); 	
 
 // 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 IMG_MEDICAL SET IMAGE=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
    //conn.commit();
    String sql2 = "SELECT IMAGE FROM IMG_MEDICAL WHERE ID=1 FOR UPDATE";
 
    // Execution de la requête et récupération du résultat
    OracleResultSet rset=(OracleResultSet) stmt.executeQuery(sql2);
 
    if( rset.next()) {
 
    // Récupération du descripteur d'OrdImage
    OrdImage imgObj = (OrdImage) rset.getORAData("image", OrdImage.getORADataFactory() );
 
// 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:\\img\\1.jpg");
         //   System.out.println("result2"); 
         //   System.out.println(imgObj); 
        }
        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 IMG_MEDICAL 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.setORAData(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