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

Entrée/Sortie Java Discussion :

[CLOB] Détection caractère de fin


Sujet :

Entrée/Sortie Java

  1. #1
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut [CLOB] Détection caractère de fin
    Bonjour,

    je cherche la liste des fonctions : par exemple replace()

    car je récupère des chaînes dont le retour chariot est "zappé" à l'affichage dans ma page html. je voudrais donc remplacer le CHR(10) ou CHR(13) par <BR>

    d'avance merci.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    346
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 346
    Points : 439
    Points
    439
    Par défaut
    Après avoir réfléchi un petit moment je ne pense pas que la bonne solution soit d'utiliser une transformation à partir de String car :
    1 -> En java il n'y a pas de raisons de travailler avec \r ou \n en fin de ligne
    (je parieras même que tes chaînes n'en comportent pas)
    2 -> Le cout risque d'être important (fonction recherche couteuse) si tu travailles avec un nombre important de chaînes typiquement le cas dans une bdd
    3 -> le mieux est peut-être de concaténer un simple : </br> à la fin de toute tes lignes.

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Il s'agit d'un champ CLOB. Je ne peux donc connaitre la fin de la ligne qu'en interceptant le caractère CHR(10). (sinon, comment qui ou quoi que ce soit pourrait savoir qu'il y a un saut de ligne dans le texte s'il n'est pas matérialisé par un caractère spécial ?)
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    346
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 346
    Points : 439
    Points
    439
    Par défaut
    Je vais essayer de t'expliquer comment tu pourrais faire (je ne suis pas sûr que c'est bon mais c'est pour donner une idée).

    Je pars du principe qu'à partir d'un ResultSet tu as obtenu un CLOB par la méthode :
    Je ne sais pas comment tu lis ton CLOB mais la bonne solution (enfin je pense) serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    try {
      BufferedReader br = new BufferedReader(monClob.getCharacterStream()) {
      String line;
      while((line = br.readLine()) != null) {
        line += "</br>";
        // après tu travailles avec ta ligne tu l'envoies dans un Writer
      }
      br.close();
    }
    catch (exception e) {
      ...
    }
    Ainsi tu n'as pas à te soucier des caractères de fin de lignes java le fait pour toi.
    J'espère que je n'ai pas trop dit n'importe quoi car je ne sais pas ce qu'est un CLOB (apparemment un champ qui te permet de stocker un texte, à ce que j'ai compris)

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Effectivement, une colonne CLOB permet de stocker une chaîne de caractères jusqu'à 4Go

    il n'est donc pas possible d'utiliser une fonction java du genre :

    string.replace( CHR(10), "<BR>") ?
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    346
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 346
    Points : 439
    Points
    439
    Par défaut
    En java il n'est pas conseillé d'utliser des valeurs par défaut pour les fins
    de ligne il existe de nombreux posts sur ce forum (notamment pour des raisons de portabilité).

    L'esprit java si je peux l'appeler de cette façon est d'utliser des classes Writer et Reader de façon à avoir le même traitement si tu travailles sur différents flux. Une url, un fichier, ou tout autre chose se traite de la même façon après avoir construit les objets adéquats, tu n'as pas besoin de savoir sur quoi tu lis, tu te concentres sur ce que tu veux faire avec.

    Ceci explique ce modèle de construction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader br = new BufferedReader(monClob.getCharacterStream()) ;
    Pour ma part je te conseillerais le bout de code que je t'ai donné car je
    pense qu'une recherche dans chaque chaîne est couteuse (tu vas devoir analyser ta chaîne) alors que tout peut-être fait de façon transparente.

    Néanmoins, on peut tout à fait traiter en String mais :
    -> plus long car c'est plus qu'une simple concaténation
    -> tu vas devoir charger en mémoire tout ton CLOB alors que là
    tu fais une lecture bufferisée ce qui peut être intéressant si ton CLOB
    est vraiment grand et/ou plusieurs requêtes sont envoyées simultanément. Pas besoin d'acheter de la RAM pour le serveur .

    Voilà j'espère avoir répondu correctement.

  7. #7
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Merci, je vais voir cela.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 07/10/2004, 18h05
  2. [DB2] conversion BLOB -> CLOB
    Par Fabien Celaia dans le forum DB2
    Réponses: 12
    Dernier message: 12/07/2004, 12h09
  3. [CLOB]Installation spéciale???
    Par DEC dans le forum JDBC
    Réponses: 5
    Dernier message: 09/07/2004, 16h08
  4. Réponses: 10
    Dernier message: 22/05/2004, 13h51
  5. Réponses: 12
    Dernier message: 27/08/2003, 11h04

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