我接手了一个vb.net项目,它的一个特点是,当系统每天第一次打开时,它会自动创建一个每日数据库备份。
客户要求的一件事是让我在数据库上设置密码,使其更安全,并限制对它的访问,因为他将进一步销售该项目。
我已经添加了一个密码,并在连接字符串中设置了密码来登录程序,但是我需要设置密码才能进行备份,但是目前,我不知道密码会去哪里,因为我以前从来没有做过类似的事情(因为我现在只是一个学徒)。
为备份设置密码最简单的方法是什么?这是当前处理它的代码
If .Item("autoBackup") = True Then
If .Item("buDaily") = True Then
sql = "SELECT * FROM [System Settings]"
dataAd = New OleDb.OleDbDataAdapter(sql, con)
dataset = New DataSet
dataAd.Fill(dataset)
With dataset.Tables(0).Rows(0)
If File.Exists(.Item("backupPath") & "backup" & _
DateTime.Now.ToString("yyyy-dd-MM") & ".mdb") = True Then
Else
System.Threading.ThreadPool.QueueUserWorkItem(AddressOf asyncBackupDaily)
End If
End With
End If
编辑
这是asyncBackupDaily
Private Sub asyncBackupDaily(ByVal state As Object)
Try
sql = "SELECT * FROM [System Settings]"
dataAd = New OleDb.OleDbDataAdapter(sql, con)
dataSet = New DataSet
dataAd.Fill(dataSet)
Dim currentDB As String = readIni("DATABASE", directorypath & "settings.ini")
Dim newDB As String = dataSet.Tables(0).Rows(0).Item("backupPath") & _
"backup" & DateTime.Now.ToString("yyyy-dd-MM") & ".mdb"
My.Computer.FileSystem.CopyFile(currentDB, dataSet.Tables(0).Rows(0).Item("backupPath") & _
"backup" & DateTime.Now.ToString("yyyy-dd-MM") & "-nc.mdb", True)
If My.Computer.FileSystem.FileExists(newDB) = True Then
My.Computer.FileSystem.DeleteFile(newDB)
End If
Dim dbo As New DAO.DBEngine
dbo.CompactDatabase(dataSet.Tables(0).Rows(0).Item("backupPath") & _
"backup" & DateTime.Now.ToString("yyyy-dd-MM") & "-nc.mdb", newDB & ";pwd=Acplus2016!")
Try
My.Computer.FileSystem.DeleteFile(dataSet.Tables(0).Rows(0).Item("backupPath") & _
"backup" & DateTime.Now.ToString("yyyy-dd-MM") & "-nc.mdb")
Catch ex As Exception
End Try
MsgBox("Daily auto-backup successful!", MsgBoxStyle.OkOnly, "Success")
Catch ex As Exception
errorLog(ex)
End Try
End Sub
dbo.CompactDatabase(dataSet.Tables(0).Rows(0).Item("backupPath") & "backup" & DateTime.Now.ToString("yyyy-dd-MM") & "-nc.mdb", newDB)
出错
修复;
dbo.CompactDatabase
线上的错误是由参数引起的。"密码无效"
解决方法是将这一行改为以下
dbo.CompactDatabase(dataSet.Tables(0).Rows(0).Item("backupPath") & "backup" & DateTime.Now.ToString("yyyy-dd-MM") & "-nc.mdb", newDB, Nothing, Nothing, ";pwd=myPassword")