我正在尝试使用 Visual Studio 在 Xamarin 解决方案中实现 SQLite。但是,我找不到实现 SQLiteAsyncConnection 的正确方法。
我正在学习一个教程,该教程只是将一个字符串传递给 SQLiteAsyncConnection 的构造函数,但这是(不再?)接受的。我用谷歌搜索找到了一个更新的解决方案,几乎所有地方都找到了向构造函数添加平台的解决方案,但这对我来说是一个错误。
我想我可能没有将正确的 NUGet 包添加到项目中。我已将 sqlite-net-pcl 包添加到共享项目和 android 项目中。
我今天也更新了所有的 NUGet 包,重建了解决方案,甚至删除了/bin 和/obj 文件夹,但它仍然无法正常工作。
using System.IO;
using SQLite.Net;
using SQLite.Net.Async;
using Xamarin.Forms;
using SQLiteTest.Droid;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
[assembly: Dependency(typeof(SQLiteDB))]
namespace SQLiteTest
{
public class SQLiteDB : ISQLiteDB
{
public SQLiteAsyncConnection GetAsyncConnection()
{
const string fileName = "test.db3";
var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var path = Path.Combine(documentsPath, fileName);
var platform = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
var cwLock = new SQLiteConnectionWithLock(platform, new SQLiteConnectionString(path, true));
var connection = new SQLiteAsyncConnection(() => cwLock);
return connection;
}
}
}
我得到的错误是:
错误 CS0234 命名空间“SQLite.Net”中不存在类型或命名空间名称“平台”(是否缺少程序集引用?)SQLiteTest.Android D:\Mobile Apps\Mosh\SQLiteTest\SQLiteTest\SQLiteTest。安卓\SQLiteDB.cs
最佳答案
好吧,我很确定您没有将 SQLite.Net.Platform.XamarinAndroid.dll
包添加到您的 native Android 项目中,这在您使用此依赖项服务时导致了此问题。
如果您使用 SQLite-net和或SQLite.Net-PCL在下面的路径中查找 Xamarin.Android 平台 dll:
packages\SQLite.Net-PCL.3.1.1\lib\MonoAndroid\`SQLite.Net.Platform.XamarinAndroid.dll`
关于c# - 我如何使用 Xamarin 为 Android 使用 SQLiteAsyncConnection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54302626/