我正在尝试将我的应用程序从访问 SQLite 切换,并且我喜欢加密。我正在尝试将“Microsoft.data.sqlite”与“SQLitePCLRaw.bundle_e_sqlcipher”一起使用,但设置密码似乎无济于事。遵循官方指南:从这里
它像这样设置它:Public DBConnection As String = "Data Source=" & Environment.CurrentDirectory & "\test.db;Mode=ReadWriteCreate;Password=testtest123"
并打开连接,我也尝试这样做:
Dim DBConnection As String = "Data Source=" & Environment.CurrentDirectory & "\test.db;Mode=ReadWriteCreate"
Try
Using dbconn As New SqliteConnection(DBConnection)
dbconn.Open()
Dim command = dbconn.CreateCommand()
command.CommandText = "SELECT quote($password);"
command.Parameters.AddWithValue("$password", "testtest123")
Dim quotedpsw = New String(command.ExecuteScalar)
command.CommandText = "PRAGMA key = " & quotedpsw
command.Parameters.Clear()
command.ExecuteNonQuery()
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
我在使用连接之前尝试了这些设置方法SQLitePCL.raw.SetProvider(New SQLitePCL.SQLite3Provider_e_sqlcipher())
,它们都没有对其进行加密,也没有给出异常。我也尝试使用“SQLitePCLRaw.bundle_sqlcipher”,但它给出了这个例外:找不到方法“Int32 SQLitePCL.ISQLite3Provider.sqlite3_win32_set_directory(Int32,System.String)”。
我还尝试使用 SQLCipher 3 和 4 使用 SQLite 的 DB Browser 加密外部数据库,但这些方法都不能从我的应用程序连接到数据库...谢谢!
编辑。:我以为我会重新启动,所以我删除了每个包并重新下载了我最初提到的两个(+提供程序包),现在当我SQLitePCL.raw.SetProvider(New SQLitePCL.SQLite3Provider_e_sqlcipher())
每次设置时都会出现异常:无法加载“e_sqlcipher”DLL。找不到指定的模块。如果有人对另一个解决方案有很好的经验,我也愿意使用另一种解决方案。