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

Développement Web en Java Discussion :

Où stocker des requêtes SQL ?


Sujet :

Développement Web en Java

  1. #21
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Points : 35
    Points
    35
    Par défaut
    Re !
    Je rencontre quelques petits soucis avec le getResourceAsStream().

    En fait je ne sais pas quel chemin indiquer. Pour l'instant je fait un ptit programme test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
           private static InputStream is;
     
           public static void parseXML(){
              SAXBuilder sxb = new SAXBuilder();
              try{
                 //On crée un nouveau document JDOM avec en argument le fichier XML
                 //On utilise un getResourceAsStream plutot qu'un File() pour ne pas donner le chemin complet du .xml
                 //Le parsing est terminé
                 Class cl = Class.class;
                 is = cl.getResourceAsStream("PropertiesRequetes.xml");
                 document = sxb.build(is);
              }
              catch(Exception e){}
           }
    Mon .xml est dans le même package que cette classe (pour l'instant), et quand j'utilise ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getRootElement();
    Il me sort une Exception de type null (donc sur document je suppose)

  2. #22
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    oula, ne fait pas de catch exception vide ... s'il arrive pas à lire ton fichier (ce qui est le cas visiblement, puisque le node Root est absent) tu ne sauras pas ce qu'il se passe.

    Fais un printStackTrace dedans.

    où as tu mis ton fichier XML ?

    si c'est dans META-INF, utilise

    cl.getResourceAsStream("/PropertiesRequetes.xml");
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  3. #23
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    bon j'ai fait une toute petite démo, comme toi :

    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
     
    package jdomdemo;
     
    import java.io.IOException;
    import java.io.InputStream;
    import org.jdom2.Document;
    import org.jdom2.JDOMException;
    import org.jdom2.input.SAXBuilder;
     
    public class JDomDemo {
     
        public static void main(String[] args) throws JDOMException, IOException {
            SAXBuilder sxb = new SAXBuilder();
            InputStream is = JDomDemo.class.getResourceAsStream("fichier.xml");
            Document doc = sxb.build(is);
            System.out.println("Root name : " + doc.getRootElement().getName());
        }
    }
    le fichier xml nommé "fichier.xml" est placé dans le package "jdomdemo" (tout comme la classe), voici son contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <racine>
        <fils>Donnée 1</fils>
        <fils>Donnée 2</fils>
        <fils>Donnée 3</fils>
    </racine>
    et ça marche correctement.

    Voici ce que ça m'affiche :


    Donc je pense que tu as sûrement un problème de syntaxe dans ton XML.
    Tu es sûr que ton fichier XML est bien formé ?
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Points : 35
    Points
    35
    Par défaut
    Merci pour tes réponses une nouvelle fois très efficaces, car j'ai trouvé !
    Pour le catch effectivement c'est une faute Quand j'ai vu que ça me sortait un pointeur null j'ai pas essayé de chercher plus loin... Grossière erreur car en mettant le printStack, il m'a indiqué une erreur à la ligne 81 de mon xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    <string>t.technicien Is Not NULL And t.technicien <> ''</string>
    < et > caractères interdits bien sûr...

    Donc plus qu'a remplacer par les données codées &# 60; et &# 62; et le tour est joué..
    Et là ça marche !

    Ça m'apprendra à sous estimer les Exception

  5. #25
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    tu as aussi "&lt;" et "&gt;" pour respectivement "<" et ">"

    lt : less than
    gt : greater than




    autre solution, utiliser une portion CDATA qui évite d'avoir à échapper les caractères spéciaux XML.

    Dans ton cas ça donnerait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <string><![CDATA[t.technicien Is Not NULL And t.technicien <> '']]></string>
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  6. #26
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Points : 59
    Points
    59
    Par défaut
    Il y a peut-être une contrainte que j'ai pas vu, un besoin caché, mais quand même : utiliser XML pour ça, c'est un marteau-pilon pour tuer une mouche. Pourquoi ne pas faire simple ? Ce sera plus rapide à faire tout de suite, et plus maintenable à long terme.

    Tout ce que tu veux, c'est une clé => une requête : prend un fichier properties, ça se lit en une seule ligne avec un java.util.ResourceBundle. Pour tes compléments optionnels : tu adoptes une convention, par exemple "clé" pour la requête et "clé.1", "clé.2", etc. pour les compléments. Tu fais une petite classe wrapper autour pour stocker ton bundle, avec une méthode utilitaire pour récupérer une liste des compléments pour une clé donnée, et tu es parti.

    Ca t'aura pris une heure, et si à l'avenir le besoin devient plus complexe, tu n'auras que l'intérieur de ton wrapper à reprendre. Par contre, effectivement, c'est moins amusant que de jouer avec XPath

  7. #27
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    justement, il a une clé, plusieurs requêtes ;-) donc le properties ne va pas sans faire les ".1" et ".2" qui sont bien chiants à implémenter (comparer à un parsing XML qui le fait tout seul).

    Ca ne reste que mon avis.
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  8. #28
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Points : 35
    Points
    35
    Par défaut
    Merci pour vos réponses

    Boojum, ce que tu me conseilles parait être une solution aussi Je n'ai jamais manipulé de fichier properties, mais je veillerai à m'y intéresser
    Je dis ça car j'ai réussi à mettre en place mon XPath et mon JDOM, et ça a l'air de fonctionner : je recherche bien mes requêtes, le parsing se fait correctement, et les parties sont retournées en un éclair grâce au XPath

    fxrobin j'ai bien pris note et j'ai placé des CDATA, je me prends moins la tête à échapper les caractères un par un

    Bref, la migration bdd>XML suit son cours donc je vous tient au courant
    Et si jamais je vois que ça coince j’essaierai avec un properties et wrapper (faudra déjà que je m'exerce )

  9. #29
    Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par fxrobin Voir le message
    justement, il a une clé, plusieurs requêtes ;-) donc le properties ne va pas sans faire les ".1" et ".2" qui sont bien chiants à implémenter (comparer à un parsing XML qui le fait tout seul).
    Uh ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        private ResourceBundle bundle = ResourceBundle.getBundle("queries");
     
        public List<String> getComplements(String key) {
            int i = 1;
            List<String> result = new ArrayList<String>();
            while (bundle.containsKey(key + "." + i)) {
                result.add(bundle.getString(key + "." + i));
                i = i + 1;
            }
            return result;
        }
    10 minutes, 10 lignes Désolé, j'ai juste une dent contre le XML utilisé à tout bout de champ, j'en ai trop vu...

  10. #30
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Citation Envoyé par Boojum Voir le message
    Uh ?
    10 minutes, 10 lignes Désolé, j'ai juste une dent contre le XML utilisé à tout bout de champ, j'en ai trop vu...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Document doc = sxb.build(is);
    XPath xpa = XPath.newInstance("//requete[name='truc']");
    String requete = ((Element) xpa.selectSingleNode(doc.getRootElement())).getText();
    2 minutes, 3 lignes
    j'suis 5 fois plus rapide I love XML


    mais j'aime bien aussi les properties, je trouve juste que c'est pas forcément adapté à son besoin
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  11. #31
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Points : 35
    Points
    35
    Par défaut
    Bon alors j'ai réussi à tout passe par le XML, ça fonctionne
    Quand je profile à nouveau l'appli, les requêtes qui étaient avant utilisées pour la récupération des requêtes ont totalement disparues

    Par contre pas de différence flagrante au niveau des temps de chargements à l'utilisation, mais bon au moins l'appli est allégée

  12. #32
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  13. #33
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 139
    Points : 35
    Points
    35
    Par défaut
    J'ai oublié : grand merci pour vos aides

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Structure] Stocker des requêtes SQL
    Par clisson dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 05/12/2006, 13h45
  2. Fabriquer des requêtes sql à partir d'un document xml
    Par ktel dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 18/10/2005, 16h45
  3. [MFC] comment écrire des requêtes SQL
    Par kitsune dans le forum MFC
    Réponses: 9
    Dernier message: 27/09/2005, 15h23
  4. Journal des requêtes SQL effectuées
    Par Kcirtap dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 09h58
  5. Recherche ibrairie pour éxécuter des requêtes SQL via C++
    Par daemon dans le forum Choisir un environnement de développement
    Réponses: 5
    Dernier message: 14/06/2004, 10h28

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