我正在尝试实现 SQLite 的一个非常基本的用法。我有一个Button和一个EditText。我想存储EditText OnClick.
我正在关注这个:https ://developer.xamarin.com/guides/android/application_fundamentals/data/part_3_using_sqlite_orm/
和https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/databases/
如果没有收到后续错误,我无法通过以下起始代码:var db = new SQLiteConnection (dbPath);
错误:
'SQLite.SQLiteConnection' 的类型初始化程序引发了异常。
内部异常:
System.Exception:这是“诱饵”。您可能需要将 SQLitePCLRaw.bundle_* nuget 包之一添加到您的平台项目中。
在 SQLitePCL.Batteries_V2.Init () [0x00000] 在 <9baed10c674b49e0b16322f238b8ecc1>:0 在 SQLite.SQLiteConnection..cctor () [0x00000] 在 /Users/vagrant/git/src/SQLite.cs:169 }
我已经在 PCL 和 Android 项目上安装了 NuGet 包。我看到安装了以下软件包:
SQLitePCLRaw.provider.e_sqlite3.android
SQLitePCLRaw.lib.e_sqlite3.android
我试过安装:
SQLitePCLRaw.bundle_e_sqlite3
如前所述,代码是可能的最基本实现:
try
{
string dbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "TestDB-DEV.db3");
var db = new SQLiteConnection(dbPath);
db.CreateTable<PersonName>();
}
我花了几天时间尝试了许多资源,例如:https ://forums.xamarin.com/discussion/87289/sqlite-net-pcl-bait-issue但最终没有成功。
不幸的是,诸如“它只是有效”、“不确定我做了什么”、“清理/重建”之类的废话是我见过的唯一答案,例如以前的链接、其他 SO 帖子,如Xamarin SQLite “这是‘诱饵’”
这是我package.config的Android项目:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="sqlite-net-pcl" version="1.4.118" targetFramework="monoandroid60" />
<package id="SQLitePCLRaw.bundle_green" version="1.1.5" targetFramework="monoandroid60" />
<package id="SQLitePCLRaw.core" version="1.1.5" targetFramework="monoandroid60" />
<package id="SQLitePCLRaw.lib.e_sqlite3.android" version="1.1.5" targetFramework="monoandroid60" />
<package id="SQLitePCLRaw.provider.e_sqlite3.android" version="1.1.5" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="monoandroid60" />
<package id="Xamarin.Forms" version="2.4.0.282" targetFramework="monoandroid60" />
</packages>
这是 PCL 项目的 package.config:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="sqlite-net-pcl" version="1.4.118" targetFramework="portable45-net45+win8+wpa81" />
<package id="SQLitePCLRaw.bundle_green" version="1.1.5" targetFramework="portable45-net45+win8+wpa81" />
<package id="SQLitePCLRaw.core" version="1.1.5" targetFramework="portable45-net45+win8+wpa81" />
<package id="Xamarin.Forms" version="2.3.4.247" targetFramework="portable45-net45+win8+wpa81" />
</packages>

