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

我正在使用 C# 为 Android 编写 Xamarin.Forms 应用程序。我在以下位置设置了 Sqlite dB:System.Environment.SpecialFolder.Personal

当应用程序部署在设备上时,我可以添加数据然后检索它。但是,当我第二天检查应用程序时(离线,没有从 pc 调试)所有的 dB 数据都消失了。

这是否意味着 dB 文件在一段时间后消失了?


心有法竹
浏览 116回答 2
2回答

阿晨1998

sqlite db 中数据的神秘消失可能有多种原因。确保你的 db 文件存在,也许你可以在某处实现一个小的调试按钮,它会抛出一个警报,告诉你文件是否存在。但是使用 System.Environment.SpecialFolder.Personal 不应该是原因,我也将那个文件夹用于我的应用程序。其次,您是否积极提交交易?特别是当您的应用程序进入后台时,我建议调用 Commit() 以确保每个待处理的事务都写入数据库,因为您永远不知道在您的应用程序处于后台时垃圾收集器何时出现。如果您正在使用多线程,请确保以支持多线程环境的模式打开数据库。如果你用一个简单的打开你的sqlite dbSQLiteConnection conn = new SQLite.SQLiteConnection(path);数据库将打开单线程。试试这个:SQLiteConnection conn = new SQLite.SQLiteConnection(path, SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.NoMutex);如果这没有帮助,请更深入地了解您的代码(您如何打开数据库,如何插入/更新数据等...)

噜噜哒

来自 DB 的数据不应该消失。你确定你的数据库初始化代码没问题吗?也许每次启动应用程序时,数据都会恢复到某个启动状态?
打开App,查看更多内容
随时随地看视频慕课网APP