bastet1978
Messages postés54Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 4 décembre 2005
-
24 févr. 2005 à 10:08
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 2006
-
3 mars 2005 à 13:36
Bonjour j'ai une appli qui permet de creer, modif, suppr des DB mysql
en ligne de commande a travers un JTextField en utilisant
executeUpdate() et excecuteQuery() selon le type de requette. Mais je
veux pouvoir tapper 'mysql --help' ou 'mysqldump -u user -p bidule
..........' et en afficher le retour. Et ca ne marche pas :( .
Quelqu'un sait quelle fonction utiliser?
Pas de System() svp, si l'utilisateur n'a pas modifier son PATH , c'est la merde.
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 24 févr. 2005 à 10:52
Salut
Si l'utilisateur n'a pas de PATH correctement configurer alors tu ne
pourra tout simplement pas exécuter ta commande que ce soit mysql ou
autre. Le PATH remplace le besoin d'avoir à spécifié le chemin complet
jusqu'à l'exécuatble donc si tu veux lancer le programme pas de
solution miracle :
- soit il est enregistré dans le PATh et cela est normal, surtout si le
mec gère la base, je ne crois pas qu'il va aller dans le rep à chaque
fois en DOS pour lancer sa commande, donc son PATH doit être renseigné,
c'est le minimum pour un admin ..
- Sinon trouve le répertoire qu icontient l'applcation et lance le !
Donc 2 choix soit le PATH soit le répertoire complet, le premier est
quand même plus propre sinon faut demander à la personne d'aller
chercher l'exécutable ...
SI tu veux afficher la sortie de ton programme qui s'exécute avec ton Runtime.exec rien de plus simple !!!!
Cette méthode te renvoit un objet Process, il te suffit de prendre le OuputStream et d'utiliser les PipeStream !
bastet1978
Messages postés54Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 4 décembre 2005 25 févr. 2005 à 09:57
Merci, le mysqldump fonctionne avec Runtime.getRuntime().exe("")
Je recupere le flux genere par la commande pour ecrire le fichier.
Pour le path;
Je me connecte à mysql avec un statement avant d'executer le programme
ce qui doit modifier temporairement le path en lui ajoutant celui de
mysql car j'ai viré le path myqsl sur mon pc et le prog tourne -la
commande mysqldump me construit correctement mon fichier sql-
Par contre, la commande mysql DB < fichier.sql ne marche pas.
Je ne sais pas pourquoi. Elle fonctionne sous ligne de commande
pourtant. Le flux retourné est en fait le meme que la commande mysql
--help :( alors qu'en commande il n'y a aucun retour mais la DB est
mise à jour.
J'ai essaillé de lire le fichier .sql
puis de l'envoyer à sql avec un executeUpdate. Ca fonctionne mais à un
moment il me retourne une erreur en disant que le serveur ne permet pas
l'update, puis continue à fonctionner puis encore erreur et fini par ne
plus rien retourner -bug- C'est peut etre à cause de la vitesse
d'envoie de l'input stream qui est trop rapide pour le serveur ? je
sais pas. C'est toujours aux alentours des 1100 enregistrements qu'il
deconne.
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 27 févr. 2005 à 21:19
Salut
Cela ne m'étonne qu'à moitié ...
Perso MySQL est un SGBD que je n'aime vraiment pas et d'ailleurs voici
l'une des raisons ... sauf que lorsque tu as 500 000 lignes à updater
c'est bien pire ... il tient pas la charge du tout !!! Ah PostGreSQL
.... euh je m'emporte là !! ;-)
Scinde ta requête en plusieurs update et fais des commit de temps en
temps .. car au bout d'un moment le moteur n'en peut plus, et à vrai
dire cela se comprend. Sinon met toi en setAutoCommit(true) (ou une
méthode équivalente du dirver JDBC) comme ça il commit à chaque fois
mais les performances seront fortement dégradée ! Donc à moins de faire
toutes les minutes en production tu peux bien faire ...
Tiens moi au courant ....
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 3 mars 2005 à 13:36
Salut
Egalement j'ai repensé à ton problème et je me suis rappelé que le
driver JDBC permet d'utiliser des batch et ensuite de les exécuter avec
executeBatch()...
Cela devrait t'aider parce cette méthode est justement faite pour faire plein d'update, mise à jour àla chaine ...