Restaurer une base MYSQL ?

Résolu
amundain Messages postés 110 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 28 août 2012 - 15 oct. 2007 à 11:48
amundain Messages postés 110 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 28 août 2012 - 15 oct. 2007 à 13:54
Bonjour à tous,

J'ai un petit soucis concernant la restauration d'une base MySQL dans une appli Java.
Autant j'arrive à exécuter un dump de sauvegarde en utilisant un Runtime, autant la restauration ne fonctionne pas avec un Runtime...et là, j'ai besoin d'aide !

Voilà mon bout de code, à vot' bon coeur, et merci d'avance pour toute piste !

public

class
RestaureBase {

private String restaure;

public
RestaureBase(){

SQLRestore();

}

void
SQLRestore(){

JFileChooser fc= new
JFileChooser("C:");

FileNameExtensionFilter ff =new
FileNameExtensionFilter("fichiers SQL","sql");

fc.addChoosableFileFilter(ff);

int
retourFichier= fc.showOpenDialog( null
);

if
(retourFichier == JFileChooser. APPROVE_OPTION
)

{

File file =fc.getSelectedFile();

restaure= "mysql -h localhost -u root mediatheque < "+file;

System. out
.println(restaure);

try
{

Runtime.getRuntime().exec(restaure);

} catch
(IOException e) {

JOptionPane.showMessageDialog(null
, "Erreur de chargement de la base", "Erreur", JOptionPane.ERROR_MESSAGE
);

}

}

}

amundain

<hr width ="100%" size="2" />Java bien,merci.

4 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
15 oct. 2007 à 12:17
Salut,

regarde sur ce thread -> ICI <- il y a une solution qui visiblement fonctionne correctement (bon c'est plus lourd mais bon...).

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
15 oct. 2007 à 12:05
Salut,

utilise plustot un tableau d'argument pour ton exec

ex:
String [] args = new String [] {
    "mysql",
    "-h",
    "localhost",
    "-u",
    "root",
    "mediatheque",
    "<",
    file
};

par contre je ne te garanti pas le resultat (perso j'ai eu que des prob avec les redirections de flux et Runtime...)

Sinon visiblement tu utilises mysql en root et sans mot de passe, ce qui est quand même une grosse faille de sécu...

Autre point ne mets pas en dure C: dans ton JFileChooser car ici tu rends ton code non portable (regarde du coté de la méthode java.io.File.listRoots())

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
amundain Messages postés 110 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 28 août 2012 1
15 oct. 2007 à 12:09
Merci pour le coup de main, Twinuts, mais malheureusement ça ne marche pas...Quand je tape le résultat de la commande avec un system.out, celle-ci est pourtant bonne, et quand je la tape en console dos elle fonctionne parfaitement...Mystère non résolu, donc, on dirait bien. Je vais essayer de continuer à fouiller...
Pour ce qui est de mysql en root sans mot de passe, je suis end éveloppement sur mon poste local, donc pour le moment je fais ça comme ça, mais c'est vrai, faudra que je pense à la sécurité !

Merci en tout cas,

A +,

amundain

<hr width="100%" size="2" />Java bien,merci.
0
amundain Messages postés 110 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 28 août 2012 1
15 oct. 2007 à 13:54
Ca marche comme sur des roulettes, en effet !

Merci ;-)

amundain

<hr width="100%" size="2" />Java bien,merci.
0
Rejoignez-nous