【发布时间】: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 谢谢..你可以回答这个问题,我会把它标记为正确答案