android平台中的sqlite-pcl数据库初始化

时间:2014-12-14 12:32:56

标签: sqlite xamarin xamarin.android android-sqlite

我有一个非常奇怪的案例在android平台上使用sqlite-pcl ...我有一个数据库类,它继承自SQLiteConnection,我使用个人文件夹为我的数据库,在构造函数中我有一个检查存在,但经常当我再次启动应用程序而不删除任何文件时,它返回false ...

 public class ScannifyDatabase : SQLiteConnection
            {
       public static string DBPath
                {
                    get
                    {
                        string path =        System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
                        return System.IO.Path.Combine(path, "Scaniff.db3");
                    }
                }
      public ScannifyDatabase(string path)
                : base(new SQLitePlatformAndroid(),path)
            {
                if (!TableExists())
                {
                 this.CreateTable<DocumentType>();
                 InitData();
                }
           }
       private bool TableExists()
            {
               // return this.TableExists();
                const string cmdText = "SELECT name FROM sqlite_master WHERE type='table' AND name=?";
                var cmd = this.CreateCommand(cmdText, typeof(DocumentType).Name);
                var res = !string.IsNullOrEmpty(cmd.ExecuteScalar<string>());
                return res;
            }

 }

问题是什么?

1 个答案:

答案 0 :(得分:0)

在Xamarin Studio中,在“首选项”下 - &gt; Android,请确保已选中“在应用程序部署之间保留数据/缓存”。 Visual Studio中有类似的设置。