Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VB.net中备份和恢复mysql数据库_Mysql_Vb.net_Windows - Fatal编程技术网

如何在VB.net中备份和恢复mysql数据库

如何在VB.net中备份和恢复mysql数据库,mysql,vb.net,windows,Mysql,Vb.net,Windows,如何在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 (*.

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

因此,我希望在锁柜中的命令提示符处使用progressbar执行加载过程。我还有大约一年的时间来尝试解决这个问题。我终于找到了答案

 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
然后,您可以在按钮单击事件中使用备份和还原子项,或者您可以将代码直接粘贴到按钮单击事件中

PS.DB=您的数据库

让我知道这是否有帮助


我大概有一年的时间想弄明白这一点。我终于找到了答案

 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
然后,您可以在按钮单击事件中使用备份和还原子项,或者您可以将代码直接粘贴到按钮单击事件中

PS.DB=您的数据库

让我知道这是否有帮助


Emely

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