在不设置连接字符串的情况下设置数据库登录密码

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")