如何在VB.net中备份和恢复mysql数据库
如何在vb.net中备份和恢复数据库mysql我使用xampp。但当备份过程开始时,加载他的生命进度条 这是我的代码:如何在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 (*.
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上有一个很好的软件包可以为你做备份