Bonsoir.
Je développe une application en Java qui, selon mes intentions actuelles, permettera d'exécuter des queries SQL sur une database cible (sqlite, oracle, mysql,... etc).
Donc, mon appli a une text area ou l'utilisateur peut y insérer de l'SQL ensuite il lance l'exécution via un bouton (classique quoi...)
Maintenant on arrive au problème que j'ai:
En effet, après avoir demandé à certaines personnes on m'a répondu que JDBC ne permettait pas d'exécuter plusieurs queries d'un coup (un script entier on va dire). Oui, il y'a la fonctionnalité Statement.addBatch() puis ExecuteBatch() mais je retombe également sur un problème:
En effet, si je dois exécuter mes queries l'une après l'autre (notez que les queries peuvent faire l'objet d'un mélange de SELECT, d'INSERT, d'UPDATE, de CREATE... etc) je dois alors parser l'input de l'utilisateur.
Facile me diriez-vous:
-> Je split sur ";" et je teste le premier keyword
Je trouve cette solution super crâde, car:
- Si j'ai un ";" dans par exemple une chaine: WHERE field_name LIKE 'cool;' c'est foutu même si le script est correcte
Donc là il est clair que la solution qui reste envisageable c'est de s'amuser à développer un parseur de SQL... youpi !
Si vous avez déjà utilisé le logiciel Win32 SQL Tools pour Oracle vous comprendriez le résultat auquel je veux arriver.
Est-ce qu'il existe une autre solution qui permettera de passer outre cette limitation ?
D'avance merci
Partager