Jump to content
joaogomes

backup e restore BD em mysql em VB.NET

Recommended Posts

joaogomes

Boa noite.

Já consegui fazer o backup da BD, está a guardar-me os create tables e os inserts num ficheiro sql. Até aqui tudo bem, contudo o problema está no restauro da BD. Alguém me pode ajudar?

Obrigado.

Cumps.

Share this post


Link to post
Share on other sites
Caça

Onde é que estás a ter dificuldade?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
joaogomes

   Private Sub BackupDaBDToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BackupDaBDToolStripMenuItem.Click
        Dim caminho1 As String
        Dim saveFileDialog1 As New SaveFileDialog
        saveFileDialog1.Filter = "Ficheiros sql (*.sql)|*.sql"

        If saveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            caminho1 = saveFileDialog1.FileName

            Dim shellcomand As String
            Try
                shellcomand = "C:\Program Files\wamp\bin\mysql\mysql5.5.8\bin\mysqldump --opt --password=fcporto --user=Joao --database voluntariado -r " & caminho1 & " "
                Shell(shellcomand)
                MsgBox("Backup Realizado com Sucesso.", MsgBoxStyle.Information)

            Catch ex As Exception

                MsgBox("Erro ao fazer cópia de segurança.Tente novamente.", MsgBoxStyle.Critical, "Erro")

            End Try
        Else
            MsgBox("Backup cancelado.", MsgBoxStyle.Information)
        End If
    End Sub

Talvez seja melhor começar desde o inicio. Este é o código do Backup. Pronto está a funcionar, ou seja, cria o ficheiro com os create tables e os inserts.

    Private Sub RestauroDaBDToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RestauroDaBDToolStripMenuItem.Click
        Dim caminho2 As String
        Dim openFileDialog1 As New OpenFileDialog
        openFileDialog1.Filter = "Ficheiros sql (*.sql)|*.sql"

        If openFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            caminho2 = openFileDialog1.FileName

            Dim shellcomand As String
            Try
                shellcomand = "C:\Program Files\wamp\bin\mysql\mysql5.5.8\bin\mysql --user=Joao --password=fcporto --database voluntariado < " & caminho2 & " "
                Shell(shellcomand)
                MsgBox("Restauro Realizado com Sucesso.", MsgBoxStyle.Information)

            Catch ex As Exception

                MsgBox("Erro ao restaurar a base de dados.", MsgBoxStyle.Critical, "Erro")

            End Try
        Else
            MsgBox("Restauro cancelado.", MsgBoxStyle.Information)
        End If
    End Sub

O problema está no restore, uma vez que ele apresenta a mensagem Restauro realizado com sucesso, contudo eu não noto nenhuma alteração dos dados.

Se me pudessem ajudar agradecia.  :confused:

Share this post


Link to post
Share on other sites
Caça

Mostra essa mensagem porque o aplicação inicia com sucesso, o que não significa que aquilo que queres seja efectuado.

Se executares o valor da string shellcomand directamente acontece alguma coisa?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
joaogomes

Não percebi o que quis dizer. Executar directamente como assim? Eu criei um backup com determinados dados, e outro backup com outros dados. Para ver se o restore estava a funcionar, depois testei com um destes e não notei alterações nos dados.

Share this post


Link to post
Share on other sites
Caça

Pega no conteúdo da variável shellcomand e executa-o na janela executar do windows.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
joaogomes

não funciona. eu suspeito que seja aí que está o problema. Não sei que faça.

Share this post


Link to post
Share on other sites
Caça

Pois, o problema está ai. Verifica quais são os parâmetros necessários e a sintaxe para fazer um restauro.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
joaogomes

Pois isso já eu estou  :wallbash: de verificar e procurar, até vi um tópico daqui e falei com um utilizador Azevedo por PM porque ele estava com um problema idêntico ao meu e deu o tópico como resolvido e eu fiquei a pensar que também tivesse conseguido fazer o restore mas pelos vistos não. Já não sei que faça. Obrigado.

Share this post


Link to post
Share on other sites
joaogomes

Não consigo entender. Segui todos os passos desses links e nada. O restore continua a não dar. Não percebo. Obrigado.

Share this post


Link to post
Share on other sites
joaogomes

Bom dia.

Ontem estive de volta do cmd e executei os seguintes comandos:

cd C:\Program Files\wamp\bin\mysql\mysql5.5.8\bin

mysql.exe -u Joao -pfcporto voluntariado < C:\Backup1.sql

E fez o restore da base de dados.

Contudo na aplicação vb.net:

    Private Sub RestauroDaBDToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RestauroDaBDToolStripMenuItem.Click
        Dim caminho2 As String
        Dim openFileDialog1 As New OpenFileDialog
        openFileDialog1.Filter = "Ficheiros sql (*.sql)|*.sql"

        If openFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            caminho2 = openFileDialog1.FileName
            Dim shellmuda As String
            Dim shellcomand As String
            Try
                shellmuda = "cd C:\Program Files\wamp\bin\mysql\mysql5.5.8\bin "
                shellcomand = "mysql.exe -u Joao -pfcporto voluntariado < " & caminho2 & " "
                Shell(shellmuda)
                Shell(shellcomand)
                MsgBox("Restauro Realizado com Sucesso.", MsgBoxStyle.Information)

            Catch ex As Exception

                'MsgBox("Erro ao restaurar a base de dados.", MsgBoxStyle.Critical, "Erro")
                MsgBox(ex.Message, MsgBoxStyle.Critical, "Erro")
            End Try
        Else
            MsgBox("Restauro cancelado.", MsgBoxStyle.Information)
        End If

Dá-me sempre este erro: file not found. Deve haver qualquer problema na passagem do parâmetro caminho2.

Share this post


Link to post
Share on other sites
Caça

Não tens de colocar aspas no caminho?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Tipo isto

shellcomand = "mysql.exe -u Joao -pfcporto voluntariado < """ & caminho2 & """"


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Comenta o bloco try catch


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.