20 ago 2013

Hacer un backup de la base de datos MySql con Visual Basic


Para hacer un backup de la base de datos, para luego enviar el fichero por email, probé muchos códigos por internet y en mi caso sólo me funcionó correctamente este de aquí.


Crear un backup de la base de datos MySQL

  • Creamos un método backupDB que se encargará de hacer el backup automáticamente y luego llamar al método enviarEmail que veremos en otra entrada.
  • El botón EmailButton se encarga de mostrar un mensaje de confirmación para realizar la copia y luego enviar el email.

Private Sub EmailButton_Click(sender As Object, e As EventArgs) Handles EmailButton.Click
        Dim Message As String = "¿Quieres enviar por email la copia de la base de datos?"
        Dim Caption As String = "Atención, vas a enviar la copia de la base de datos."
        Dim Buttons As MessageBoxButtons = MessageBoxButtons.OKCancel
        Dim Result As DialogResult

        Result = MessageBox.Show(Message, Caption, Buttons)
        If Result = System.Windows.Forms.DialogResult.OK Then
            backupDB()
        End If
End Sub

  • En el método de backup le asignamos la ruta donde se encuentra nuestro mysqldump 
  • Le asignamos los argumentos de nuestro servidor 
  • Y le decimos donde queremos guardar el archivo
  • Luego creamos un proceso, le asignamos el FileName y los Arguments
  • Le puse que se hiciera de manera oculta para que no aparezca la ventana de MSDOS, de ahí la línea Pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
  • Después ejecutamos el proceso y si todo es correcto llamará al método que se encarga de enviar por email este backup

Public Sub backupDB()
        Dim correcto As Boolean = True
        Dim cmd, arg As String

        Try
            cmd = "C:\Archivos de programa\MySQL\MySQL Server 5.5\bin\mysqldump"
            arg = " --opt --force --host=localhost --port=3306 --user=root--password=1234 --databases vb -r C:\Programa\Email\baseDatos.sql"
            Dim Pr As New Process()
            Pr.StartInfo.FileName = cmd
            Pr.StartInfo.Arguments = arg
            Pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            Pr.Start()
        Catch
            MsgBox("No se pudo generar la copia", MsgBoxStyle.Exclamation, "Error")
            correcto = False
        End Try
        If correcto Then
            enviarEmail()
        End If
    End Sub

No hay comentarios:

Publicar un comentario