Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3041 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  que fait ce code de ORDImage

 


que fait ce code de ORDImage?




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

que fait ce code de ORDImage

n°2080111
dzkiller
Posté le 03-06-2011 à 00:46:57  profilanswer
 

bonsoir j'ai réussie de connecté la base de donnée et j'ai tout faire et ça va bien marche mais lorsque je vais jeter un coup d'œil dans la table dans la BD oracle j'ai rien trouvé donc l'ajout ne fonctionne pas et aussi y'a aucune requete insert  comment il peut ajouter une image???
[java]// 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 Ajout_OrdImage {
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:@host:1521:nomdb", // url de la base
"benoit", // utilisateur
"secret" ); // 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.getORAData(1, 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:\\image.jpg" );
}[/java]


---------------
saluuut
mood
Publicité
Posté le 03-06-2011 à 00:46:57  profilanswer
 

n°2081179
liouan
Posté le 07-06-2011 à 23:07:34  profilanswer
 

Les balises [Java], c'était bien essayé mais non, il fallait bien laisser les balises cpp ;)
 
Pour plus de lisibilité, je remets ton code dans un bloc :
 

Code :
  1. // Importation des packages importants
  2. import java.sql.*; // Pour la connexion avec Oracle
  3. import java.io.*; // Pour les entrée sorties
  4. import oracle.jdbc.*; // Pour les pilotes Oracle
  5. import oracle.sql.*; // Pour les spécificités SQL d'Oracle
  6. import oracle.ord.im.OrdImage; // Pour la classe OrdImage
  7. import oracle.ord.im.OrdImageSignature; // Pour la classe OrdImageSignature
  8. public class Ajout_OrdImage {
  9. public static void main(String[] args) {
  10. try {
  11. // Etape 1 : Création de la connexion avec la base
  12. // Enregistrement du pilote Oracle
  13. DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
  14. // Ouverture de la connexion avec la BD
  15. Connection conn = DriverManager.getConnection(
  16. "jdbc:oracle:thin:@host:1521:nomdb", // url de la base
  17. "benoit", // utilisateur
  18. "secret" ); // mot de passe
  19. // Etape 2 : Mise à false de l'autocommit
  20. conn.setAutoCommit(false);
  21. // Etape 3 : Initialisation de l'attribut ORDImage
  22. // Ecriture de la requête SQL
  23. String sql = "UPDATE MaTable SET image=ORDSYS.ORDImage.init() WHERE id=1";
  24. // Création d'une instance d'un Objet Statement
  25. Statement stmt = conn.createStatement();
  26. // Execution de la requête
  27. stmt.execute(sql);
  28. // Etape 4 : Récupération du descripteur
  29. // Ecriture de la requête SQL
  30. String sql2 = "SELECT image FROM MaTable WHERE id=1 FOR UPDATE";
  31. // Execution de la requête et récupération du résultat
  32. OracleResultSet rset=(OracleResultSet) stmt.executeQuery(sql2);
  33. // S'il y a un résultat
  34. if( rset.next()) {
  35. // Récupération du descripteur d'OrdImage
  36. OrdImage imgObj = (OrdImage) rset.getORAData(1, OrdImage.getORADataFactory() );
  37. // Etape 5 : Envoi de l'image
  38. // Création d'un bloc try{}catch pour l'exception d'entrée/sortie
  39. try{
  40. // Envoi de l'image dans l'attribut localData du type ORDImage
  41. imgObj.loadDataFromFile("c:\\image.jpg" );
  42. }


 
Maintenant, regardons l'étape 2, tu mets ta connexion en autocommit="false".
Du coup, quand tu fais des modifs en base, elles ne seront pas effectuées tant que tu n'auras pas fait un commit.
 
Et, dans la plupart des SGBD, tu ne peux pas voir les données qui ne sont pas commités (cad, tu ne les récupères pas avec un select).
C'est pour ça que tu ne le récupère pas à l'étape 4.
 
Donc tu as 2 solutions:
- Virer l'étape 2. (pas très propre)
- faire un commit juste avant l'étape 4 (tu as sûrement un méthode Connection.commit())


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  que fait ce code de ORDImage

 

Sujets relatifs
insertion d'une image a l'aide du OrdImage en javaprobléme OrdImage
Code Css erroné ?Erreur code java String[][]
[??] Création dynamique de page sur Mediawiki (à partir de code PHP)aidez moi svp dans la compréhension de ce code
Sauvegarde fichier mon code n'est pas parfaitcode pour le calcul d'une fonction à partir d'une matrice
Zone texte html agissant sur code sourceException code in C ???
Plus de sujets relatifs à : que fait ce code de ORDImage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR