Расшифровать / пароль SQLite для запроса

#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 зашифрован, поэтому я предполагаю, что ключ не работает?