在不设置连接字符串的情况下设置数据库登录密码
Setting a database login password without setting the connection string
我接手了一个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
行的错误是由参数引起的。 "The password is not valid"
解决办法是将这一行改成下面这样
dbo.CompactDatabase(dataSet.Tables(0).Rows(0).Item("backupPath") & "backup" & DateTime.Now.ToString("yyyy-dd-MM") & "-nc.mdb", newDB, Nothing, Nothing, ";pwd=myPassword")
我接手了一个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
行的错误是由参数引起的。 "The password is not valid"
解决办法是将这一行改成下面这样
dbo.CompactDatabase(dataSet.Tables(0).Rows(0).Item("backupPath") & "backup" & DateTime.Now.ToString("yyyy-dd-MM") & "-nc.mdb", newDB, Nothing, Nothing, ";pwd=myPassword")