Как я могу использовать e_sqlcipher с microsoft.data.sqlite?
Я пытаюсь переключить свое приложение с доступа к SQLite, и id хотел бы иметь шифрование. Я пытаюсь использовать «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
Я пробовал эти методы с настройкой до использования соединения, ни один из них не зашифровал его и также не давал исключений. Я также пробовал использовать «SQLitePCLRaw.bundle_sqlcipher», но он дает следующее исключение: Метод не найден «Int32 SQLitePCL.ISQLite3Provider.sqlite3_win32_set_directory(Int32, System.String)».
Я также попытался зашифровать базу данных снаружи с помощью DB Browser для SQLite как с SQLCipher 3, так и с 4, но ни один из этих способов не мог затем подключиться к базе данных из моего приложения ... Спасибо!
РЕДАКТИРОВАТЬ: Я подумал, что перезапущу, поэтому я удалил каждый пакет и повторно загрузил два, о которых я упоминал изначально (+ пакет поставщика), и теперь, когда я установил
SQLitePCL.raw.SetProvider(New SQLitePCL.SQLite3Provider_e_sqlcipher())
каждый раз выдает исключение: DLL "e_sqlcipher" не может быть загружена. Указанный модуль не найден. Я также буду открыт для использования другого решения, если у кого-то есть хороший опыт использования другого.
1 ответ
После перемещения dll в обозреватель решений ошибка «dll не загружается» исчезла. Затем я установил имя файла, которого не было, чтобы я мог создать новую базу данных с помощью microsoft.data.sqlite с поставщиком sqlitepclraw, установленным на sqlcipher(с помощью battery.init), затем с паролем в строке подключения i выполнил запрос для создания таблицы, вот так он ее зашифровал, затем я просто использовал браузер БД для экспорта данных из старой базы данных в новую зашифрованную. Я пробовал много других вещей, и это единственный способ заставить его работать