【问题标题】:How to make a backup and restore mysql database in VB.net如何在VB.net中备份和恢复mysql数据库
【发布时间】:2016-02-20 17:37:39
【问题描述】:

如何在 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

所以我希望在带有进度条的储物柜中的命令提示符下加载过程

【问题讨论】:

  • 欢迎使用 StackOverflow:如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行并单击“代码示例”按钮 ({ } ) 在编辑器工具栏上以很好地格式化和语法突出显示它!
  • 你的格式太糟糕了,@marc_s 自己放弃了修复你的代码。 :-)(我也是)
  • NuGet 上有一个不错的包可以为你做备份

标签: mysql vb.net windows


【解决方案1】:

我也有大约一年的时间试图弄清楚这一点。我终于找到了方法。

 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 = 你的数据库

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

艾米丽

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2013-03-23
    • 2011-04-25
    相关资源
    最近更新 更多