IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Utilisation des BFILE Oracle sous java


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Par défaut Utilisation des BFILE Oracle sous java
    Je developpe une application Web avec Tomcat 5.5.12 et JDK 1.5.0_05.

    J'essaie d'utiliser les BFILE mais je coince au moment où je dois faire un select, dans la table servant à contenir les pointeurs, sur la colonne contenant le pointeur de type BFILE. La méthode ExecuteQuery de l'objet Statement ne renvoit rien ; par contre quand je fais un select via l'interface SQL, je récupère bien le pointeur BFILE en question, d'où ma surprise

    Y'a-t-il une explication ?

    merci

    J'utilise une base Oracle version9 et le driver Oracle ojdbc14.jar

  2. #2
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonsoir,

    peux tu nous mettre ton code qu'on y voit plus clair ?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Par défaut
    J'ai créé une table T_BFILE avec les colonnes ID de type VARCHAR2(15) et FILENAME de type BFILE. Cette table contient une seule ligne créée par un INSERT INTO t_bfile ('CP03_211J',bfilename('BLODIR','toto.txt'));

    Voici le bout de code dans ma JSP appelante RechercherAidenligne.jsp ( exemple avec codsor = 'CP03_211J' ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ListeLib.executeAidenligne(connex, codsor, typ);// appel de la méthode executeAidenligne de la classe ListeLib
    voici un extrait de la classe ListeLib :
    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
     
    public void executeAidenligne(Connection connect, String codsor, String typ) {
     
    		codsor = codsor.toUpperCase();
    		typ = typ.toUpperCase();
     
    		sql = "select * from t_bfile where upper(id) = '" + typ + "_" + codsor + "'";
    		System.out.println("sql = " + sql);
     
    		executeSql(connect, sql);	
     
    	}
     
    	private synchronized void executeSql(Connection connect, String sql){
     
     
    		try{
    			System.out.println("ko1");
    			instruction = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    			System.out.println("ko2");
    			resultat = instruction.executeQuery(sql);
    			System.out.println("ko3 = " + resultat.getFetchSize());
    			resultat.next();
    			System.out.println("ko4 = " + resultat.getString(1));
    			BFILE bfile = ((OracleResultSet)resultat).getBFILE(2);
    			System.out.println("ko5 = "+ bfile);
     
    		}
    		catch(SQLException e){
     
     
    		}
    		//
    		catch(Exception e){
    			}
    	}
    lors de l'execution de la jsp RechercherAidenligne.jsp, les instructions se succèdent normalement sauf l'étape "BFILE bfile = ((OracleResultSet)resultat).getBFILE(2);" car le marqueur "ko5 =" ne s'affiche pas sur la console d'Eclipse. A l'étape ko3, le fetchsize affiche 10 donc le resultat n'est pas vide. A l'étape ko4, CP03_211J s'affiche

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Par défaut
    complément :

    quand on execute select * from t_bfile where upper(id) = 'CP03_211J', on récupère en sortie la ligne correspondante dans la table t_bfile

  5. #5
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Citation Envoyé par marti Voir le message
    car le marqueur "ko5 =" ne s'affiche pas sur la console d'Eclipse.
    Cela voudrait dire qu'une exception a été déclenchée, non ?
    Je me trompe peut-être, mais tu ne peux conserver le BFile "ouvert" (c'est à dire une référence dessus) si tu fermes ton ResultSet. Il faudrait donc récupérer le flux pour le mettre dans une structure adéquate comme byte[]

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Par défaut
    Voic l'execption généré :

    java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.DelegatingResultSet

  7. #7
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Essaye peut-être la méthode getInnermostDelegate après avoir casté en DelegatingResultSet.

    Quelque chose qui ressemblerait à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DelegatingResultSet drs = (DelegatingResultSet) resultat;
    BFILE bfile = ((OracleResultSet) drs.getInnermostDelegate()).getBFILE(2);

Discussions similaires

  1. Utiliser des macros Excel sous open office
    Par Memes dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/11/2007, 21h46
  2. transferer des tables oracle sous access
    Par lassmust dans le forum Oracle
    Réponses: 3
    Dernier message: 28/12/2005, 13h38
  3. Compression des dump Oracle sous windows
    Par thomasjcj dans le forum Oracle
    Réponses: 5
    Dernier message: 28/10/2005, 14h06
  4. équivalent des Synonymes Oracle sous SQL Server 2000
    Par wello00 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/07/2005, 08h52
  5. [CR] Utilisation des package Oracle ??
    Par sboober dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 06/12/2004, 07h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo