繁体   English   中英

如何在VB.net中进行备份和还原mysql数据库

[英]How to make a backup and restore mysql database in VB.net

如何在vb.net中进行备份和还原数据库mysql我使用xampp。 但是当备份过程开始时,加载他的生命进度栏。

这是我的编码:

Private Sub btnBackup_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnBackup.Click

Dim file As String 

sfd.Filter = "SQL Dump File (*.sql)|*.sql|All files (*.*)|*.*"

sfd.FileName= "Database Backup "  + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".sql"

If sfd.ShowDialog = DialogResult.OK Then

file = sfd.FileName

Dim myProcess As New Process()

myProcess.StartInfo.FileName = "cmd.exe"

myProcess.StartInfo.UseShellExecute = False

myProcess.StartInfo.WorkingDirectory ="C:\xampp/mysql/bin"

myProcess.StartInfo.RedirectStandardInput = True

myProcess.StartInfo.RedirectStandardOutput = True

myProcess.Start()

Dim myStreamWriter As StreamWriter= myProcess.StandardInput

Dim mystreamreader As StreamReader = myProcess.StandardOutput

myStreamWriter.WriteLine("mysqldump -u root --password=1 _  -h 127.0.0.1 ""minimart"" > """   file   """ ")

myStreamWriter.Close()

myProcess.WaitForExit()

myProcess.Close()

MsgBox("Backup Created Successfully!", MsgBoxStyle.Information, "Backup")

EndIf

End Sub

所以我想在带有进度条的储物柜中的命令提示符处进行加载过程

我也有大约一年试图解决这个问题。 我终于发现了。

 Private Sub Backup()
    Dim file As String
    sfd.Filter = "Backup file (*.mdf)|*.mdf"
    sfd.FileName = "Database Backup " & Date.Today & ".mdf"

     Try
        If sfd.ShowDialog = Windows.Forms.DialogResult.OK Then
            file = sfd.FileName
            Dim DB As String = "C:\Users\Spups\Documents\Visual Studio 2010\Projects\Test-javier\Test-javier\bin\Debug\Test-Javier-DB.mdf"
            Dim Log As String = "C:\Users\Spups\Documents\Visual Studio 2010\Projects\Test-javier\Test-javier\bin\Debug\Test-Javier-DB_log.ldf"

            Dim BLog As String = file.Replace(".mdf", "_log.ldf")

            Dim constr As String = "Data Source=.\SQLEXPRESS;Database=Master;Integrated Security=True;User Instance=True"
            Dim con As New SqlConnection(constr)
            SqlConnection.ClearAllPools()
            con.Open()

            Dim cmdON As New SqlCommand
            cmdON.CommandType = CommandType.Text
            cmdON.CommandText = "ALTER DATABASE [" & DB & "] SET ONLINE"
            cmdON.Connection = con
            cmdON.ExecuteNonQuery()

            Dim cmdOFF As New SqlCommand
            cmdOFF.CommandType = CommandType.Text
            cmdOFF.CommandText = "ALTER DATABASE [" & DB & "] SET OFFLINE WITH ROLLBACK IMMEDIATE"
            cmdOFF.Connection = con
            cmdOFF.ExecuteNonQuery()

            My.Computer.FileSystem.CopyFile(DB, file, True)
            My.Computer.FileSystem.CopyFile(Log, BLog, True)

            cmdON.CommandType = CommandType.Text
            cmdON.CommandText = "ALTER DATABASE [" & DB & "] SET ONLINE"
            cmdON.Connection = con
            cmdON.ExecuteNonQuery()

            MessageBox.Show("Backup was succesful", "Test", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If


    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

Private Sub Restore()

    Dim file As String
    ofd.Filter = "Backup file (*.mdf)|*.mdf"

    Try
        If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
            file = ofd.FileName

            Dim DB As String = "C:\Users\Spups\Documents\Visual Studio 2010\Projects\Test-javier\Test-javier\bin\Debug\Test-Javier-DB.mdf"
            Dim Log As String = "C:\Users\Spups\Documents\Visual Studio 2010\Projects\Test-javier\Test-javier\bin\Debug\Test-Javier-DB_log.ldf"
            Dim BLog As String = file.Replace(".mdf", "_log.ldf")

            Dim constr As String = "Data Source=.\SQLEXPRESS;Database=Master;Integrated Security=True;User Instance=True"
            Dim con As New SqlConnection(constr)
            SqlConnection.ClearAllPools()
            con.Open()

            Dim cmdON As New SqlCommand
            cmdON.CommandType = CommandType.Text
            cmdON.CommandText = "ALTER DATABASE [" & DB & "] SET ONLINE"
            cmdON.Connection = con
            cmdON.ExecuteNonQuery()

            Dim cmdOFF As New SqlCommand
            cmdOFF.CommandType = CommandType.Text
            cmdOFF.CommandText = "ALTER DATABASE [" & DB & "] SET OFFLINE WITH ROLLBACK IMMEDIATE"
            cmdOFF.Connection = con
            cmdOFF.ExecuteNonQuery()

            My.Computer.FileSystem.DeleteFile(DB)
            My.Computer.FileSystem.DeleteFile(Log)

            My.Computer.FileSystem.CopyFile(file, DB, True)
            My.Computer.FileSystem.CopyFile(BLog, Log, True)

            cmdON.CommandType = CommandType.Text
            cmdON.CommandText = "ALTER DATABASE [" & DB & "] SET ONLINE"
            cmdON.Connection = con
            cmdON.ExecuteNonQuery()

                Me.TableTestTableAdapter.Fill(Me._Test_Javier_DBDataSet.TableTest)
                Me.TablePriceTableAdapter.Fill(Me._Test_Javier_DBDataSet.TablePrice)
                MessageBox.Show("Restore was succesful", "Test", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

然后,您可以在button_click事件中使用备份和还原子项,或者您可以将代码直接粘贴到button_click事件中。

PS。 DB =您的数据库

如果这有帮助,请告诉我。

Emely

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM