Ошибки SQLite Xamarin.Forms PCL на Android

Я пытаюсь создать базу данных sqlite на xamarin (С#) в проекте pcl. Я следую этому руководству . В реализации Android (шаг 5) я получаю следующие ошибки:

Ошибка CS0104 «Окружающая среда» — неоднозначная ссылка между «Android.OS.Environment» и «System.Environment» AlarmSQLite.Android c:\users\thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite_Android.cs 30 Active

Ошибка CS0234 Тип или имя пространства имен «Net» не существует в пространстве имен «SQLite» (вам не хватает ссылки на сборку?) AlarmSQLite.Android c:\users\thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\ SQLite_Android.cs 33 Активный

Я использую VisualStudio2017. Я попытался удалить .Net и добавил System.Environment, но получаю все больше и больше новых ошибок. Мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using SQLite;
using Xamarin.Forms;
using AlarmSQLite.Droid;
using System.IO;

[assembly: Dependency(typeof(SQLite_Android))]

namespace AlarmSQLite.Droid
{
public class SQLite_Android : ISQLite
{
    public SQLite_Android() { }



    public SQLite.SQLiteConnection GetConnection()
    {
        var dbName = "AlarmDB.db3";
        var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        var path = Path.Combine(documentsPath, dbName);

        var platform = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
        var connection = new SQLite.Net.SQLiteConnection(platform, path);

        return connection;
    }

}
}

Все то же самое с учебником. Что я делаю неправильно? Спасибо!

Новые ошибки:

Ошибка CS0234 Тип или имя пространства имен «Платформа» не существует в пространстве имен «SQLite» (вам не хватает ссылки на сборку?) AlarmSQLite.Android C:\Users\Thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\ SQLite_Android.cs 33 Активный

Ошибка CS0029 Невозможно неявно преобразовать тип SQLite.Net.SQLiteConnection в SQLite.SQLiteConnection AlarmSQLite.Android C:\Users\Thomas\source\repos\AlarmSQLite\AlarmSQLite\AlarmSQLite.Android\SQLite_Android.cs 36 Active


person Thomas Athanasiou    schedule 18.10.2017    source источник


Ответы (1)


Ошибка CS0104: Среда исходит из «Android.OS.Environment», а также из «System.Environment», поэтому возникает проблема двусмысленности. Просто добавьте систему в среду.

var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);

Ошибка CS0234: похоже, вы не добавили Пакет SQLite-Async Nuget. Вы должны добавить это в свой PCL, а также в проект Android и снова собрать проект.

Ошибка CS0234 и CS0029: убедитесь, что вы добавили следующие два пакета nuget в проекты Android и PCL.

Sqlite.Net PCL
введите здесь описание изображения

Затем вместо использования Sqlite попробуйте использовать Sqlite.Net.

введите здесь описание изображения

Ваш окончательный код должен выглядеть:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using AlarmSQLite.Droid;
using System.IO;
using SQLite.Net;
using SQLite.Net.Async;

[assembly: Dependency(typeof(SQLite_Android))]

namespace AlarmSQLite.Droid
{
public class SQLite_Android : ISQLite
{
    public SQLite_Android() { }



    public SQLiteConnection GetConnection()
    {
        var dbName = "AlarmDB.db3";
        var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
        var path = Path.Combine(documentsPath, dbName);

        var platform = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
        var connection = new SQLiteConnection(platform, path);

        return connection;
    }

}
}

Не забудьте настроить свой интерфейс на то же самое. Это должно быть так:

SQLiteConnection GetConnection():

Примечание. Вы можете опустить ссылку на Sqlite.Net.Async PCL, если она вам не нужна.

person MilanG    schedule 18.10.2017
comment
Ошибки устранены, но я получаю новые ошибки. Платформа (та же ошибка, что и .Net) и при обратном соединении метод должен быть .Net. но когда я это делаю, у меня возникает проблема с интерфейсом, который устанавливает соединение - person Thomas Athanasiou; 19.10.2017
comment
Я увидел только две ошибки в вашем посте. Пожалуйста, укажите эти новые ошибки. - person MilanG; 19.10.2017
comment
я обновил свой ответ. Вы используете ссылку SQLite вместо SQlite.Net. - person MilanG; 20.10.2017