C# 表单Android应用程序SQLite数据消失
我正在使用C#为Android编写一个Xamarin.Forms应用程序。我将Sqlite数据库设置为:System.Environment.SpecialFolder.Personal 当应用程序部署在设备上时,我可以添加数据,然后检索数据。 然而,当我第二天检查应用程序时(离线,没有从pc上调试),所有的dB数据都消失了C# 表单Android应用程序SQLite数据消失,c#,android,database,sqlite,xamarin.forms,C#,Android,Database,Sqlite,Xamarin.forms,我正在使用C#为Android编写一个Xamarin.Forms应用程序。我将Sqlite数据库设置为:System.Environment.SpecialFolder.Personal 当应用程序部署在设备上时,我可以添加数据,然后检索数据。 然而,当我第二天检查应用程序时(离线,没有从pc上调试),所有的dB数据都消失了 这是否意味着数据库文件在一段时间后消失?来自数据库的数据不应消失。 您确定您的DB初始化代码正常吗?可能每次启动应用程序时,数据都会恢复到某种启动状态?sqlite db中
这是否意味着数据库文件在一段时间后消失?来自数据库的数据不应消失。
您确定您的DB初始化代码正常吗?可能每次启动应用程序时,数据都会恢复到某种启动状态?sqlite db中数据的神秘不一致可能有多种原因 确保您的db文件存在,也许您可以实现一个小的调试按钮,它将抛出一个警报,告诉您该文件是否存在 但是,使用System.Environment.SpecialFolder.Personal不应该是原因,我的应用程序也使用该文件夹 第二,您是否主动提交事务?特别是当你的应用程序后台运行时,我建议调用Commit(),以确保每个挂起的事务都被写入数据库,因为你永远不知道当你的应用程序后台运行时垃圾收集器何时出现 如果使用多线程,请确保以支持多线程环境的模式打开数据库。 如果使用简单的
SQLiteConnection conn = new SQLite.SQLiteConnection(path);
数据库将打开单线程。
请尝试以下方法:
SQLiteConnection conn = new SQLite.SQLiteConnection(path, SQLiteOpenFlags.Create | SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.NoMutex);
如果这没有帮助,请对您的代码多了解一点(如何打开数据库、如何插入/更新数据等)您在其他设备上测试过吗?没有。我只有一台设备