#c# #uwp #sqlcipher
#c# #uwp #sqlcipher
Вопрос:
Мне нужно разблокировать защищенный паролем файл SQLite, добавить данные, затем отправить защищенный паролем файл по электронной почте, все мои запросы и электронная почта работают нормально, пока я не защищу файл паролем с помощью браузера DB (SQLCipher),
Я следовал примеру на GitHub SQLite-Net, в котором приведен этот пример
var options = new SQLiteConnectionString(databasePath, true,
key: "password");
var encryptedDb = new SQLiteAsyncConnection(options);
Но я получаю сообщение об ошибке, когда добавляю параметры var в SQLiteAsyncConnection, ошибка гласит
не удается преобразовать из SQLite.SQLiteConnectionString в строку
private async void pickPeriod()
{
List<string> periodArray = new List<string>();
SQLitePCL.Batteries.Init();
try
{
string fileName = "fieldnames5.sql";
var databasePath = Path.Combine (Windows.Storage.ApplicationData.Current.LocalFolder.Path, fileName);
var options = new SQLiteConnectionString(databasePath, true, key: "Wi_Day!");
var conn = new SQLiteAsyncConnection(options);
{
await conn.CreateTableAsync<storeNames>();
try
{
var periodNo = await conn.QueryAsync<storeNames> ("SELECT Period FROM WkNos");
foreach (var period in periodNo)
{
string myresult = period.Period.ToString();
periodArray.Add(period.Period);
HashSet<string> set = new HashSet<string>(periodArray);
string[] result = new string[set.Count];
set.CopyTo(result);
periodArray.AddRange(result);
}
pdNumPick.Items.Clear();
pdNumPick.ItemsSource = periodArray;
}
catch
{
pdNum.Text = "<-No Data->";
}
}
}
catch
{
Debug.WriteLine("File does not exits");
}
}
Мне просто нужно разблокировать файл SQLite, добавить данные и повторно заблокировать
Комментарии:
1. Решение находится в сообщении об ошибке «не удается преобразовать из SQLite. SQLiteConnectionString to String» означает, что конструктор для SQLiteAsyncConnection принимает в качестве параметра не строку ConnectionString, а строку
2. Можете ли вы дать подсказку, как исправить ошибку? снипет в точности соответствует примеру, приведенному Cipher, поэтому я надеялся, что это сработает, вчера я потратил на это до полуночи, но у меня нет знаний для устранения ошибки
3. Оказывается, SQLiteAsyncConnection принимает только строку в качестве параметра, называемого строкой подключения, которая выглядит примерно так, как описано здесь . Я никогда не использовал SQLite с. NET но я предполагаю, что SQLiteConnectionString имеет какое-то свойство / метод для получения этой строки?
4. Вместо
(options)
записи(options.ConnectionString)
5. Спасибо за помощь, это устранило ошибку, но средство выбора по-прежнему не дает результатов, пока файл SQLite зашифрован, поэтому я предполагаю, что ключ не работает?