Hola, quiero compartir un ejemplo que permite generar Backup ó copias de respaldo de una BD y que me ha sido de gran ayuda al usarlo en aplicaciones que he desarrollado. Bueno Comencemos:
En el ejemplo muestro un ComboBox donde se listan todas las BD que tiene el motor de base de datos, en este ejemplo estamos trabajando con MySQL.
private void ListaBD(){
Connection con;
PreparedStatement ps;
ResultSet rs;
try{
//Preparamos la coneccion a la BD
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306","root","");
//Preparamos consulta
ps = con.prepareStatement("SHOW DATABASES");
rs = ps.executeQuery();
while(rs.next()){
//Llenamos la lista
comboLista.addItem(rs.getObject(1));
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
Luego se crea el método para evento del boton "Backup", estamos usando un JFileChooser para especificar la ruta donde deseamos guardar nuestro backup.
private void GenerarBackup(String bd){
//Creamos la ruta para guadar el backup
int resp = FileChooser.showSaveDialog(this);
if(resp==JFileChooser.APPROVE_OPTION){
//le añadimos la extencion *.sql
dir=String.valueOf(FileChooser.getSelectedFile().toString())+".sql";
try{
Runtime runtime = Runtime.getRuntime();
File fichero = new File(dir);
FileWriter fw = new FileWriter(fichero);
Process child = runtime.exec("C:/Archivos de programa/MySQL/MySQL Server 5.1/bin/mysqldump --opt --password= --user=root --databases "+bd+" -R");
//Process es el que ejecuta el comando para buscar el mysqldump.exe
InputStreamReader irs = new InputStreamReader(child.getInputStream());
BufferedReader br = new BufferedReader(irs);
//Aquí espesamos a sobrescribir el archivo *.sql
String line;
while( (line=br.readLine()) != null){
fw.write(line + "\n");
System.out.println(""+ line);
}
msg.setText("Se ha creador un archivo *sql en la ruta: \n"+dir);
fw.close();
irs.close();
br.close();
JOptionPane.showMessageDialog(null, "Backup generado correctamente", "Operacion completada",JOptionPane.INFORMATION_MESSAGE);
}
catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Error no se genero el backup por el siguiente motivo: " + e.getMessage(), "Verificar",JOptionPane.ERROR_MESSAGE);
}
}
}
Nota:
Process child = runtime.exec("C:/Archivos de programa/MySQL/MySQL Server 5.1/bin/mysqldump --opt --password= --user=root --databases "+bd+" -R");
Es el que crea el proceso para ejecutar la consulta con el mysqldump, mi MySQL no tiene password pero si tuviera hay que ponerlo así:
Process child = runtime.exec("C:/Archivos de programa/MySQL/MySQL Server 5.1/bin/mysqldump --opt --password=tu_pass --user=user_bd --databases "+tu_bd+" -R");
Eso es todo y espero les ayude este post, aqui les dejo el ejemplo completo.
No hay comentarios:
Publicar un comentario