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 :

Vérifier la syntaxe d'une requête SQL ?


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Points : 56
    Points
    56
    Par défaut Vérifier la syntaxe d'une requête SQL ?
    Bonjour à tous,

    aujourd'hui est un grand jour, je me remets à faire du Java ^^

    Et d'emblée, j'ai une question à vous poser.

    Je dois créer une application qui effectue des requêtes SQL sur une DB. Chaque requête est destinée à ramener un type d'info et est définie dans un XML qui contient les associations <type ; requête>.

    J'aimerais lors de l'initialisation m'assurer que les requêtes sont syntaxiquement correctes. Existe-t-il une méthode pour cela ? Fonctionne-t-elle pour les preparedStatement ?

    D'avance, je vous remercie.

    Bonne journée.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Points : 56
    Points
    56
    Par défaut
    Bhen le plus simple ne serait il pas d'éxécuter la request

    et si jamais elle est mauvaise java enveras une jolie SqlException de ce type
    java.sql.SQLException: ORA-00900: invalid SQL statement

    ensuite un check sur le sqlstate ou l error code devrait te donner la raison exacte de l erreur

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Bonjour.

    Pour répondre à ta question, non, il n'existe pas de "vérificateur de requêtes" intégré à java.
    La raison principale est que Java propose une couche d'abstraction indépendant de la base de données (package java.sql.*), et que le traitement réel de la requête est fait par le driver JDBC correspondant à la base.

    Or, la syntaxe d'une requête dépend de la base réellement utilisée (toutes ne permettent pas les traitement par lots "bulk", etc.), dont Java n'a pas connaissance (abstraction oblige).

    Le seul moyen de vérifier la syntaxe d'une requête... c'est de l'exécuter : si tu récupère une SQLException, tu pourras en l'analysant savoir si la requête était incorrecte (attention : une SQLException ne provient pas nécessairement d'une requête mal formée).
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Points : 56
    Points
    56
    Par défaut
    l on pourrais à la rigueur imaginé si tu tourne sous oracle,scanner la request sql , de remplacer le nom de la table par dual,

    de l'éxécuter(on n y coupe pas)

    il devrait ensuite te renvoyer un error code 904 (column not found) si le reste de la syntax est correcte


    pour les autres base de donnée : mysql .... il faut voir au cas le cas ....

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Points : 56
    Points
    56
    Par défaut
    Merci à vous pour vos réponses.

    Je vais donc opter pour une exécution de mes requêtes.

    Où peut-on trouver la définition des valeurs error_code associées aux SQLException ?

  6. #6
    Membre éclairé Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Points : 672
    Points
    672
    Par défaut
    tu trouveras les erreurs dans les specs de ton SGBD s'il est suffisamment documenté.

    Comme le disait CyberChouan, java n'a pas connaissance de la bd qui est utilisée. SQLException ne va faire qu'intercepter les messages d'erreurs renvoyés.

    Pour te donner un exemple, ORA-00900: invalid SQL statement est expliqué ici et tu conviendras qu'il s'agit d'une erreur propre à oracle et non à Java

  7. #7
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Autre chose, les requetes peuvent etre syntaxiquement correctes mais l'execution peut generer des erreurs. C'est par exemple le cas si l'utilisateur n' a pas les droits requis pour effectuer des modification sur une table donnée.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Points : 56
    Points
    56
    Par défaut
    Merci !

    Juste pour info il s'agit uniquement de SELECT. Bien sûr il faut que le USER ait reçu le grant en SELECT sur les tables concernées.

    Mon idée est de tester les requêtes, définie par un fichier de configuration, lors de l'initialisation de mon composant. Ces requêtes devront être ensuite exécutées plusieurs fois, et le programme ne dispose pas d'un écran de contrôle (tâche en batch). D'où la nécessité de tester les requêtes dès le départ.

Discussions similaires

  1. Vérifier la syntaxe d'une requêté SQL
    Par sihamnet dans le forum JDBC
    Réponses: 7
    Dernier message: 11/11/2014, 15h13
  2. problème de syntaxe avec une requête SQL
    Par funkyjul dans le forum Développement
    Réponses: 4
    Dernier message: 27/10/2008, 21h15
  3. [VS2005]Vérification de la syntaxe d'une requête SQL
    Par gassisprog dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/04/2008, 08h45
  4. Erreur de syntaxe dans une requête SQL
    Par Gabout dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 08/01/2008, 17h19
  5. Erreur de syntaxe dans une requête SQL
    Par amnesias dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/01/2007, 12h50

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