繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM