如何使用Xamarin在Android上使用SQLiteAsyncConnection?

时间:2019-01-22 06:45:27

标签: 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。 Android \ SQLiteDB.cs

1 个答案:

答案 0 :(得分:0)

好吧,我很确定您没有将refund软件包添加到您的本机Android项目中,这在使用此依赖项服务时会导致此问题。

如果您使用的是SQLite-net和或SQLite.Net-PCL,请在以下路径中查找Xamarin.Android平台dll:

SQLite.Net.Platform.XamarinAndroid.dll