c# - 我如何使用 Xamarin 为 Android 使用 SQLiteAsyncConnection?

标签 c# android sqlite xamarin

我正在尝试使用 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/

相关文章:

c# - 由于某种原因,自定义 IComparer 实现未按预期排序

c# - SaveChanges() 的验证错误

Android Pixate FreeStyle 更改 default.css 路径

android - 在单个 fragment 事务中添加多个返回堆栈条目

Android数据库在开头插入

c - 在 C 程序关闭和重新启动之间保存和检索简单数据的常见方法是什么?

c# - 比较具有不同 'times' 的 DateTime 字段

Android,是否可以将系统定时器用作广播接收器?

android - sqlite 表中的最大行数?

c# - 有没有办法在对象被销毁时运行一些代码?