我正在使用 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);
如果这没有帮助,请更深入地了解您的代码(您如何打开数据库,如何插入/更新数据等...)
- 2 回答
- 0 关注
- 115 浏览
添加回答
举报
0/150
提交
取消