【问题标题】:database is locked in windows phone 8.1 RT which uses SQLite as database数据库被锁定在使用 SQLite 作为数据库的 windows phone 8.1 RT 中
【发布时间】:2015-09-19 04:51:46
【问题描述】:

我正在将我的 wp8 应用程序(使用 SQL Server CE 数据库)转换为 wp8.1RT 应用程序(使用 SQLite 数据库)。我在下面的代码中收到错误“数据库已锁定”。

有时我在检索客户表信息时遇到错误,有时在删除它时。

我正在使用不同的后台工作人员,可能是因为那个数据库被锁定了。

谁能告诉我如何解决这个数据库锁定问题?

我是否需要添加任何额外的代码或设置?

    public ObservableCollection<CustomerTable> RetreiveCheckedCustomer(long customerId)
    {
        var list = new ObservableCollection<CustomerTable>();
        using (SQLiteConnection databasemodel = new SQLiteConnection(App.DB_PATH))
        {
            list = new ObservableCollection<CustomerTable>(from item in databasemodel.Table<CustomerTable>() where item.CHECKED == true select item);
            var list2 = new ObservableCollection<LocationTable>(databasemodel.Table<LocationTable>());
            foreach (var item in list2)
            {
                databasemodel.Delete(item);
            }
        }
        return list;
    }

【问题讨论】:

  • 任何人都知道如何解决给定的问题?

标签: c# windows-phone-8.1 sqlite-net database-locking


【解决方案1】:

我已使用以下行来解决数据库锁定问题。

SQLite3.Config(SQLiteConfigOption.MultiThread);

之后,我通过应用程序使用单个 SQLite 连接来解决数据库繁忙的问题,

【讨论】:

    【解决方案2】:

    根本无法将 wp8 SQL Server CE 数据库转换为 8.1 的 SQLite 数据库。几个月前遇到同样的问题,请参考我的帖子here

    【讨论】:

    • 您好 Milan Aggarwal,感谢您的回复。我如何设法将 SQL Server CE 数据库转换为 SQLite 数据库。
    • 你能分享你的方法吗?
    • 我可以用下面的代码解决“数据库锁定”的问题。 SQLite3.Config(SQLiteConfigOption.MultiThread);我可以通过在多个后台线程和 UI 线程之间共享 SQLiteConnection 来解决“数据库繁忙”问题。
    • 如何将 sql ce 升级到 sqlite?
    • 我正在维护两个应用程序。一个是 WP8 silverlight(使用 SQL server CE 数据库)。另一个是 WP8.1 RT(Using SQLite)。这里我不是在单个应用程序中将现有的 SQL CE 数据库升级到 SQLite。
    猜你喜欢
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多