Comment valider la syntaxe de requête sql?
java 1.4
Sql server 2000
je suis prise d'entrée de la requête sql (pour la validation de la valeur de champ contre les valeurs récupérées par l'exécution de la requête sql) de l'utilisateur admin qui seront stockées dans la base de données et, plus tard, je vais l'exécution de la requête sql correspondant au champ.Avant l'insertion de la requête sql dans la base de données je veux valider sa syntaxe dans le code java.
Fields Sql Query
stateCode select statecode from states
district code select district code from districts
Question similaire: stackoverflow.com/questions/660609/sql-parser-library-for-java
OriginalL'auteur Maddy.Shik | 2009-10-21
Vous devez vous connecter pour publier un commentaire.
ne pense pas qu'il n'y a aucun moyen (facile) pour valider sql
La syntaxe Sql est complexe et permet pour beaucoup de façons différentes pour entrer dans une déclaration.
Pense que vous meilleure chance serait de simplement exécuter le sql statent et si vous avez une exception SQl voir si ses une mauvaise syntaxe thats la cause.
vous pouvez ajouter certains de sql afin d'éviter d'exécuter la requête
dans sybase il serait
MIS À NOEXEC SUR
OriginalL'auteur Peter
Créer un PreparedStatement avec la chaîne de requête; si cela fonctionne, la chaîne de requête est ok (mais rien n'est exécuté encore)
OriginalL'auteur Erich Kitzmueller
Pourquoi voudriez-vous laisser entrer dans son ensemble sql-états?
Il suffit de fournir à des champs et de les laisser entrer dans le statecode ou la districtcode.
Ensuite, vérifiez si la valeur entrée est un nombre. Et exécuter la requête appropriée avec la valeur entrée.
OriginalL'auteur jitter
Une solution possible pourrait être d'obtenir l'expliquer le plan de la requête, si elle parvient à expliquer la requête je suppose qu'il doit être valide. Inconvénient, c'est qu'il n'aime pas réglée requêtes.
c'est une très bonne question. n'avez pas la moindre idée de comment le faire sur sql-server, désolé.
OriginalL'auteur Gareth Davis
Vous pourriez faire FMTONLY SET SUR et puis exécuter la requête et voir si cela fonctionne. Rappelez-vous juste de ne FMTONLY SET OFF dans un bloc finally, puisque c'est au niveau de la connexion de réglage.
OriginalL'auteur erikkallen
Vous mai besoin d'un Analyseur SQL pour faire une telle spécifiques au fournisseur en mode hors connexion SQL vérification de la syntaxe.
Prendre un coup d'oeil à cette démo qui, y compris certaines Java et C# code:
http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/vendor-specific-offline-sql-syntax-check/
OriginalL'auteur James