Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表单Android应用程序SQLite数据消失_C#_Android_Database_Sqlite_Xamarin.forms - Fatal编程技术网

C# 表单Android应用程序SQLite数据消失

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中

我正在使用C#为Android编写一个Xamarin.Forms应用程序。我将Sqlite数据库设置为:System.Environment.SpecialFolder.Personal

当应用程序部署在设备上时,我可以添加数据,然后检索数据。 然而,当我第二天检查应用程序时(离线,没有从pc上调试),所有的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);

如果这没有帮助,请对您的代码多了解一点(如何打开数据库、如何插入/更新数据等)

您在其他设备上测试过吗?没有。我只有一台设备