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

Servlets/JSP Java Discussion :

[JSP] récupération de CLOB (ORACLE)


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut [JSP] récupération de CLOB (ORACLE)
    Bonjour,
    j'essaye de récupérer le contenu d'une table oracle mais il y a un champs de type CLOB.

    Dès que je fais un select de ce champs, ma jsp ne fonctionne plus (page blanche) sans message d'erreur.

    Voici mon select:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String query = new String();
    	query = "SELECT TXTTRAVELLER, TXTSERVICE from DEMANDE_DE_BILLET where EFOLDERID=0000000000000000000000000000120";
    Dès que je rajoute le champs CLOB, a ma requete -> plantage...

    et comment l'afficher?
    pour mes autres champs je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultset.getString("TXTTRAVELLER")
    MERCI D'AVANCE

  2. #2
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String query = new String(); 
       query = "SELECT TXTTRAVELLER, TXTSERVICE, LE_CLOB  from DEMANDE_DE_BILLET where EFOLDERID=0000000000000000000000000000120";
    et tu fais resultset.getClob("nom_colonne_clob"); pour récupérer le Clob, et clob.getCharacterStream() pour récupérer le flux de cractères...

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    MERCI BCP.

    J'ai testé, ca ne marche pas.

    En fait, c'est dès que je rejoute mon champs a la requete, ca plante sans message d'erreur.

    J'ai exécuter cette requete sous TOAD, elle fonctionne.
    Sous ma jsp, plantage...

    (j'essaye meme pas de l'afficher. simplement l'ajouter au select...)

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    up.
    rien a faire, dès que je rajoute mon CLOB a ma requette select, ca plante...

  5. #5
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Tu peux me faire voir ton code... Merci.

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    no soucy
    voici le code qui marche:
    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
    Connection conRes = null;
    	ResultSet resultset = null; 
    	Statement statement = null;
    	// Chargement des Drivers JDBC d'Oracle 
    	Class.forName("oracle.jdbc.driver.OracleDriver"); 
     
    	// Connexion a la base 
     
    	Class.forName("oracle.jdbc.driver.OracleDriver");
    	String oracleURL = "jdbc:oracle:thin:@xxx.xxx.Xx.xxx:1521:ORACLE1"; //oracle23
    	String username = "e-work";
    	String password = "e-work";
     
    	conRes = DriverManager.getConnection( oracleURL , username , password );
     
    	String query = new String();
    	query = "SELECT TXTTRAVELLER, TXTSERVICE, TXTCDR, OM, TXTPROJET, TXTTELEPHONE, AEROPORTDEPART, AEROPORTARRIVEE, DATEALLER, HEUREALLER, NUMEROALLER, DATERETOUR, HEURERETOUR, NUMERORETOUR, CLASSE, PRIX, OM from DEMANDE_DE_BILLET where EFOLDERID="+FolderID;
    statement = conRes.createStatement();
    	resultset = statement.executeQuery(query);
    	if(resultset.next())
    	{ ...
    Cela fonctionne

    dès que je rajoute mon champs CLOB a mon select... zoop ca plante,
    question bete, est ce que je dois faire une autre requete et tout c'qui va avec rien que pour le CLOB???

    Merci vraiment pour votre aide

  7. #7
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Je pense que tu dois faire une reqête spéciale pour récupérer ton CLOC ( avérifier...).

    TU peux faire voir ton code en entier avec récupération du CLOB...

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    j'en suis pas encore a récuperer le clob.
    pour le moment je cherche juste a faire le select.

    pour info: le select me retourne bien des résultat lorsque je l'execute sous toad ou sqlplus...

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    y'a du nouveau:
    j'ai fait une 2eme resultset.

    le select avec le CLOB seul dans la requete a l'air de passé mais dès que je fait mon execute query -> page blanche.

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	Connection conResCLOB = null;
    	ResultSet resultsetCLOB = null; 
    	PreparedStatement  statementCLOB = null;
    	conResCLOB = DriverManager.getConnection( oracleURL , username , password );
    	String queryCLOB = new String();
    	queryCLOB = "SELECT CONDPARTICULIERE from DEMANDE_DE_BILLET where EFOLDERID=?";
     
    	statementCLOB = conResCLOB.prepareStatement(queryCLOB);
    	statementCLOB.setString(1,FolderID);
    	resultsetCLOB = statementCLOB.executeQuery();

  10. #10
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    A priori le code ne pose aucun problème trivial. Donc as tu plus d'informations dans le log...

    Sinon comme cela sa devraitmarcher, surtout que moi j'ai déjà essayé sur une table oracle.

    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
    Connection conResCLOB = null; 
    ResultSet resultsetCLOB = null; 
    PreparedStatement  statementCLOB = null; 
    conResCLOB = DriverManager.getConnection( oracleURL , username , password ); 
     
    String queryCLOB = new String(); 
    queryCLOB = "SELECT CONDPARTICULIERE from DEMANDE_DE_BILLET where EFOLDERID=?"; 
     
    statementCLOB = conResCLOB.prepareStatement(queryCLOB); 
    statementCLOB.setString(1,FolderID); 
    resultsetCLOB = statementCLOB.executeQuery();
     
    // Pour récupérer les données du Clob
    if (resultsetCLOB.next()) {
      Clob clob = resultsetCLOB.getClob(1);
      // ...
    }

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    merci,
    ca a l'air bon mais idem.
    page blanche et aucun message d'erreur a l'execution de la query.
    si je met en commentaire le:
    resultsetCLOB = statementCLOB.executeQuery();

    la page s'affiche (biensur je n'ai pas le résultat de la requete :p)

  12. #12
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Et si tu fais:

    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
    Connection conResCLOB = null; 
    ResultSet resultsetCLOB = null; 
    PreparedStatement  statementCLOB = null; 
    conResCLOB = DriverManager.getConnection( oracleURL , username , password ); 
     
    String queryCLOB = new String(); 
    queryCLOB = "SELECT CONDPARTICULIERE from DEMANDE_DE_BILLET where EFOLDERID=? FOR UPDATE OF CONDPARTICULIERE"; 
     
    statementCLOB = conResCLOB.prepareStatement(queryCLOB); 
    statementCLOB.setString(1,FolderID); 
    resultsetCLOB = statementCLOB.executeQuery(); 
     
    // Pour récupérer les données du Clob 
    if (resultsetCLOB.next()) { 
      Clob clob = resultsetCLOB.getClob(1); 
      // ... 
    }

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    le for update ne change rien.

    JE suis désolé mais j'ai bouletiser.
    je viens de mettre la connection dans un try catch et voila l'erreur remontée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    java.sql.SQLException: ORA-03115: unsupported network datatype or representation
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:181)
    	at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:631)
    	at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1225)
    	at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:723)
    	at oracle.jdbc.driver.OracleStatement.doExecuteQuery...

  14. #14
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Quel driver JDBC utilises tu ???

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    j'utilise: oracle.jdbc.driver.OracleDriver

    et au début de mon code je fait un import de: <%@ page import="java.util.*,
    java.io.*,
    java.sql.*,
    java.sql.Clob,
    javax.servlet.*,
    javax.naming.*,
    javax.sql.*,
    oracle.sql.CLOB,
    oracle.jdbc.driver.OracleResultSet,
    oracle.jdbc.driver.OracleTypes" %>

  16. #16
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Tu ne sais pas quelle version du driver JDBC tu as ???

  17. #17
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    j'utilise classes12.zip
    c'est celle livré avec oracle 8.1.7

    comment connais la version???

  18. #18
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Moi j'utilises celui là est ca doit marcher... Tu peux essayer de faire un truc: copier le même code dans une classe exécutable (avec un main) et l'exécuter...

  19. #19
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    rien a faire:
    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
    //test CLOB
    	try{
    		BufferedReader clobReader = null;
     
    		java.sql.Connection conResCLOB = null; 
    		ResultSet resultsetCLOB = null; 
    		PreparedStatement  statementCLOB = null; 
    		conResCLOB = DriverManager.getConnection( oracleURL , username , password ); 
     
    		String queryCLOB = new String(); 
    		queryCLOB = "SELECT CONDPARTICULIERE from DEMANDE_DE_BILLET where EFOLDERID=? FOR UPDATE"; 
     
    		statementCLOB = conResCLOB.prepareStatement(queryCLOB); 	
     
    		statementCLOB.setString(1,FolderID); 
     
    		resultsetCLOB = statementCLOB.executeQuery(); 
     
    		System.out.println("query executée");
     
    		// Pour récupérer les données du Clob 
    		if (resultsetCLOB.next()) { 
    			System.out.println("next trouvé");
    		 	//Clob clob = resultsetCLOB.getClob("CONDPARTICULIERE"); 
    		 	/*clobReader = new BufferedReader(clob.getCharacterStream());
             	String ligne = null;
            	while((ligne = clobReader.readLine()) != null){
               		System.out.println(ligne);
           		}*/ 
    		}
    	}catch(Exception e){
          e.printStackTrace();	
    	}
    L'executeQuery ne fait plus planter mais ca tourne indéfiniment dans le vide...
    et ma requete est bonne...
    Please, help me!

  20. #20
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 112
    Points : 52
    Points
    52
    Par défaut
    up.
    j'ai cherché tt le we et j'ai pas trouver de solution miracle...

    Pour info, c'est le driver jdbc qui generai l'erreur oracle. (unsuported...)
    j'utilise maintenant le classes111.zip

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2006, 20h11
  2. [Débutant][JSP]Récupération valeur de checkbox
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/09/2004, 09h16
  3. [Débutant][JSP] récupération liste choix multiple
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/05/2004, 13h59
  4. [JSP] Récupération de l'identifiant NT
    Par Patrick95 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 11/05/2004, 10h15
  5. [JSP] récupération de l'origine du submit
    Par Jovial dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/04/2004, 09h40

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