为了账号安全,请及时绑定邮箱和手机立即绑定

Xamarin.Forms Android 应用程序 SQLite 数据消失

Xamarin.Forms Android 应用程序 SQLite 数据消失

C#
心有法竹 2021-11-14 14:42:22
我正在使用 C# 为 Android 编写 Xamarin.Forms 应用程序。我在以下位置设置了 Sqlite dB:System.Environment.SpecialFolder.Personal当应用程序部署在设备上时,我可以添加数据然后检索它。但是,当我第二天检查应用程序时(离线,没有从 pc 调试)所有的 dB 数据都消失了。这是否意味着 dB 文件在一段时间后消失了?
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

sqlite db 中数据的神秘消失可能有多种原因。

确保你的 db 文件存在,也许你可以在某处实现一个小的调试按钮,它会抛出一个警报,告诉你文件是否存在。

但是使用 System.Environment.SpecialFolder.Personal 不应该是原因,我也将那个文件夹用于我的应用程序。

其次,您是否积极提交交易?特别是当您的应用程序进入后台时,我建议调用 Commit() 以确保每个待处理的事务都写入数据库,因为您永远不知道在您的应用程序处于后台时垃圾收集器何时出现。

如果您正在使用多线程,请确保以支持多线程环境的模式打开数据库。如果你用一个简单的打开你的sqlite db

SQLiteConnection conn = new SQLite.SQLiteConnection(path);

数据库将打开单线程。试试这个:

SQLiteConnection conn = new SQLite.SQLiteConnection(path, SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.NoMutex);

如果这没有帮助,请更深入地了解您的代码(您如何打开数据库,如何插入/更新数据等...)


查看完整回答
反对 回复 2021-11-14
?
噜噜哒

TA贡献1784条经验 获得超7个赞

来自 DB 的数据不应该消失。你确定你的数据库初始化代码没问题吗?也许每次启动应用程序时,数据都会恢复到某个启动状态?


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信