[英]Xamarin.Forms Android app SQLite data disappears
我正在使用C#为Android编写Xamarin.Forms应用。 我在以下位置设置了Sqlite dB:System.Environment.SpecialFolder.Personal
当应用程序部署在设备上时,我可以添加数据,然后检索它。 但是,当我第二天检查应用程序时(离线,无需从PC进行调试),所有的dB数据都消失了。
这是否意味着一段时间后dB文件消失了?
来自数据库的数据不应消失。 您确定数据库初始化代码可以吗? 也许每次您启动应用程序时,数据是否都已恢复到某种启动状态?
sqlite db中数据神秘消失的原因可能有多种。
确保您的db文件存在,也许您可以在某个地方实现一个小的调试按钮,这将引发警报,告诉您该文件是否存在。
但是,使用System.Environment.SpecialFolder.Personal应该不是原因,我也将该文件夹用于我的应用程序。
第二,您是否积极进行交易? 特别是当您的应用程序后台运行时,我建议调用Commit()以确保将每个挂起的事务都写入数据库,因为您不知道应用程序后台运行时何时垃圾回收器出现。
如果使用多个线程,请确保以支持多线程环境的模式打开数据库。 如果您使用简单的方法打开sqlite数据库
SQLiteConnection conn = new SQLite.SQLiteConnection(path);
数据库将打开单线程。 尝试以下方法:
SQLiteConnection conn = new SQLite.SQLiteConnection(path, SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.NoMutex);
如果那没有帮助,请对您的代码有更多的了解(如何打开数据库,如何插入/更新数据等)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.