Nidhal_Asma
Messages postés5Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention19 novembre 2008
-
19 nov. 2008 à 11:34
Nidhal_Asma
Messages postés5Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention19 novembre 2008
-
19 nov. 2008 à 15:07
Bonjour à Tous,
Bon voilà j'ai un problème assez bizarre,
Je veux exécuter un script SQL depuis mon application java, dans mon code je crée ma connexion, j'instancie un nouveau statement et puis j'exécute ma requête qui débute par "source"
Le résultat est que le problème me génère une exception :
Exception : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'source C:/test/BaseFour.sql' at line 1
Ce qui est n'est pas compréhensible que lorsque j'éxècute manuellement le script dans MySQL avec l'instruction 'source C:/test/BaseFour.sql', le script s'exécute sans aucun problème...
Quelqu'un pourrait me dire où pourrait être le problème ?
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 19 nov. 2008 à 14:04
si tu veux executer un fichier:
1- tu es oblige de lire ligne parligne le fichier pour executer les lignes (par ligne comprendre requete)
2- tu dois, selon les requetes, executer tel ou tel methodes java
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Nidhal_Asma
Messages postés5Date d'inscriptionmardi 8 mai 2007StatutMembreDernière intervention19 novembre 2008 19 nov. 2008 à 14:47
@ dvoraky
En fait une requête du genre "create database xxxx" marche et sans problème dans le même code....
J'ai vu sous un autre site qu'il faut passer dans execute ou executeupdate etc... des requetes elementaires et que les requetes de type source ne marche pas...
J'aimerai bien etre sur de cette information....
-----------------------------------------
@ sheorogath
Merci mais c'est intuitive comme solution
en fait c'est mon programme qui a créé ce fichier script....
J'ai déja une version qui execute le script ligne par ligne mais je veux faire ce genre de solution pour voir si je gagne en terme de vitesse d'execution du programme car je fais ça sur une grande quantité d'information et que la premiere solution met à peu près 10 mn pour tout finir
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 19 nov. 2008 à 14:53
Oui, je ne pense pas que cela fonctionne.
Je te conseille de faire ce que je te disais au début, à savoir, parcourir ton fichier ligne par ligne afin de créer ta requête dans une String.
Ensuite, tu passes cette String en paramètre du execute et roules ma poule.
Moi perso, j'ai les mêmes besoin que toi et je fais ça.
Comme tu veux tester les perf par un autre biais, alors je ne sais guère quoi te conseiller... Essaie en passant par les executeUpdate... pourquoi pas, mais je ne te garantie absolument rien...
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 19 nov. 2008 à 11:42
Salut,
Peux tu nous dire ce qu'est la variable "temp", s'il te plaît?
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
Vous n’avez pas trouvé la réponse que vous recherchez ?
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 19 nov. 2008 à 11:54
Ok,
Je ne pense pas qu'il faille mettre un path fans "execute"...
Enfin, c'est pas "je pense pas", c'est j'en suis sûr.
Regarde la Javadoc pour la méthode "execute" de la classe Statement... il attend en paramètre une String contenant la requête SQL, genre "SELECT * FROM toto" et non le chemin vers ton fichier SQL, genre ce que tu fais.
Donc tu as 2 possibilités:
- soit tu parcours le fichier et tu récupères son contenu que tu mets dans une et une seule String (je recommande)
- soit tu peux essayer de faire une commande SQL de genre :
statement.execute("start " + temp);
Mais bon je suis pas sûr que tous les SGBD puissent faire cela.
Voilà
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
dvoraky
Messages postés744Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 9 mai 20108 19 nov. 2008 à 13:35
ba visiblement, il aime pas...
Tu as essayé de mettre, à la place de temp, une chaine de caractère genre "SELECT * FROM nom_d_une_table" ?
<hr width="100%" size="2" />
C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...