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