Member 11334477 Ответов: 4

Как исправить ошибку SQLite 5: "база данных заблокирована" в среде UWP ?


При попытке обновить запись таблицы в SQLite, работающей в среде UWP, я получил вышеупомянутое сообщение об ошибке.

Справочники, включенные:
Майкрософт.Данных.Базы данных SQLite
Microsoft.NETCore.UniversalWindowsPlatform

Далее следует код C#... любая помощь будет приветствоваться !!!

Что я уже пробовал:

private bool SaveConfig()
{
    using (SqliteConnection db = new SqliteConnection("Filename=" + CommonVars.filePath))
    {
        using (SqliteCommand SQLcmd = new SqliteCommand("UPDATE Config SET DBversion = 2 WHERE DBversion = 1", db))
        {
            db.Open();
            try
            {
                SQLcmd.ExecuteNonQuery();
                db.Close();
                return true;
            }
            catch (SqliteException e)
            {
                // Show error and return failed...
                db.Close();
                Console.Write("Error: %s\n", e);
                return false;
            }
        }
    }
}

4 Ответов

Рейтинг:
20

Member 11334477

Спасибо вам, ребята.... проблема решена модификацией предыдущей команды SELECT следующим образом:

using (SqliteConnection db = new SqliteConnection("Filename=" + CommonVars.filePath))
{
    using (SqliteCommand SQLcmd = new SqliteCommand())
    {
        SQLcmd.Connection = db;   // Set default connection
        SQLcmd.CommandText = "SELECT * FROM Config";
        db.Open();
        using (SqliteDataReader dr = SQLcmd.ExecuteReader())
        {


Рейтинг:
2

Graeme_Grant

Из того, что я вижу из ограниченного предоставленного кода, вы создаете несколько подключений к БД. Для SQLite это может вызвать то, что вы испытываете.

Попробуйте установить Pragma journal mode=Wal разрешить несколько операций с БД.

Вы можете прочитать больше здесь: Написать Вперед Лесозаготовки[^]


Maciej Los

5ed!

Рейтинг:
0

Member 14832817

Очень глупая вещь и потерял 3 дня. Это произошло, когда я связался с git. Как только вы сможете нажать, то он будет легко обновляться.

Во время нажатия убедитесь, что он работает нормально, так как возникла какая-то проблема.