System.TypeInitializationException:' SQLite.SQLiteConnection'的类型初始值设定项。抛出一个例外

时间:2017-03-24 10:11:47

标签: c# android sqlite xamarin xamarin.android

我是android和xamarin的新手。最近我在xamrarin示例TaskyPortable之后创建了一个Android应用。问题是每当下面的代码执行时抛出错误。

        public override void OnCreate()
        {
            base.OnCreate();
            var sqliteFilename = "ToDoItemDB.db3";
            string libraryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            var path = Path.Combine(libraryPath, sqliteFilename);
            conn = new SQLiteConnection(path);

每当它使用给定路径调用新的SQLiteConnection时,它都会抛出

  

" System.TypeInitializationException:类型初始值设定项   ' SQLite.SQLiteConnection'抛出异常。"

我做错了什么?代码几乎与TaskyPortable类似。 我搜索了很多,但没有找到任何东西。

请帮助。

P.S。 :这个问题已经被问到here,我已经检查了答案。我也在droid项目中添加了SQLite.net的参考资料。但仍面临这个问题。

1 个答案:

答案 0 :(得分:1)

此代码正常运行

 
  private SQLiteConnection conn;      

  protected override void OnCreate(Bundle bundle)
  {
   base.OnCreate(bundle);
   Forms.Init(this, bundle);

   var sqliteFilename = "ToDoItemDB.db3";
   string libraryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
   var path = Path.Combine(libraryPath, sqliteFilename);
   conn = new SQLiteConnection(path);

   //create table
   conn.CreateTable<Todo>();

   LoadApplication(new App());
  }

检查这些包是否在package.config中。也许更好的是删除Sqlite包并只安装sqlite-net-pcl,这是安装其余的sqlite包

  <package id="sqlite-net-pcl" version="1.3.1" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.bundle_green" version="1.1.2" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.core" version="1.1.2" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.lib.e_sqlite3.android" version="1.1.2" targetFramework="monoandroid60" />
  <package id="SQLitePCLRaw.provider.e_sqlite3.android" version="1.1.2" targetFramework="monoandroid60" />