我是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。
我搜索了很多,但没有找到任何东西。
请帮助。
附言:此问题已经被问过here,并且我已经检查了答案。我还在droid项目中添加了SQLite.net的引用。但是仍然面临这个问题。
最佳答案
该代码有效
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" />