【问题标题】:Unable to Update Sqlite Database in Windows Phone Application无法在 Windows Phone 应用程序中更新 Sqlite 数据库
【发布时间】:2014-07-19 14:09:18
【问题描述】:

在我的 Windows Phone 应用程序中,我使用的是 Sqlite 数据库。我能够检索数据,但在尝试添加/更新任何数据时出现“只读”异常。我正在使用下面的代码

public async void UpdateFavQuote(int quoteid, string option)
        {
            var connection = new SQLiteAsyncConnection(_dbpath);

            if (option == "ADD")
            {
                await connection.ExecuteAsync("Update Quotes SET IsFav = 1 where _id =" + quoteid);
            }
            else
            {
                await connection.ExecuteAsync("Update Quotes SET IsFav = 0 where _id =" + quoteid);
            }             

        }

当我在我的模拟器/设备上运行应用程序时,它可以正常工作,但是一旦应用程序发布到商店,我就会开始收到错误消息。我尝试使用下面的代码,但也给出了同样的错误

public void UpdateFavQuote(int quoteid, string option)
        {
            var connection = new SQLiteConnection(_dbpath, SQLiteOpenFlags.ReadWrite);

            if (option == "ADD")
            {
                connection.RunInTransaction(() =>
                {

                 connection.Execute("Update Quotes SET IsFav = 1 where _id =" + quoteid);
                });
            }
            else
            {
                connection.RunInTransaction(() =>
                {
                   connection.Execute("Update Quotes SET IsFav = 0 where _id =" + quoteid);
                });
            }             
        }

一旦应用发布,这也会产生同样的问题。任何帮助将不胜感激。

【问题讨论】:

  • 数据库在哪里?它必须是可写的(例如,不在您的应用程序包中)
  • @WiredPrairie 它位于以下位置 - private static readonly string _dbpath = Path.Combine(Windows.ApplicationModel.Package.Current.InstalledLocation.Path, "QuotesDB");
  • 您无法保存回您的应用程序包。您需要将数据库复制到可以读取/写入的本地文件夹。
  • @WiredPrairie 谢谢..你可以回答这个问题,我会把它标记为正确答案

标签: sqlite windows-phone-8


【解决方案1】:

您无法写入应用程序包,因为它是只读的。您需要将数据文件复制到本地存储中,使其可写。有一个示例 here 您可以关注。

【讨论】:

    猜你喜欢
    • 2015-11-08
    • 2016-03-14
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多