[英]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.