Работа с SQLite

Настройка проекта для работы с SQLite.NET

Последнее обновление: 05.01.2019

Кроме обычных файлов для хранения данных мы можем использовать локальные базы данных. Наиболее популярной системой баз данных для локальных приложений является SQLite, поэтому рассмотрим общие принципы работы с этой СУБД.

Итак, создадим новый проект по типу Blank. Назовем его SQLiteApp.

База данных SQLite и операции с данными в Xamarin Forms

Для работы с SQLite можно использовать разные подходы и библиотеки. Рекомендуемой библиотекой является SQLite.NET, которая представляет простое ORM-решение (Object Relational Mapping) для Xamarin. Она позволяет работать с базой данных как с хранилищем объектов и манипулировать данными как объектами стандартных классов C# без использования выражений на языке SQL. И вначале добавим в главный проект в узел References с помощью менеджера NuGet эту библиотеку sqlite-net-pcl:

SQLite in Xamarin

Следует отметить, что в Nuget можно найти много похожих библиотек с подобным названием. У нужной библиотеки будут следующие данные:

  • Автор: Frank A. Krueger

  • Id: sqlite-net-pcl

При работе с SQLite в Xamarin есть один минус - полный путь к базе данных на каждой отдельной платформе будет отличаться. И чтобы решить эту задачу, нам надо использовать внедрение зависимостей. Определим интерфейс, который будет определять метод для получения пути к бд:

namespace SQLiteApp
{
    public interface ISQLite
    {
        string GetDatabasePath(string filename);
    }
}

Единственный метод интерфейса в качестве параметра принимает название файла базы данных.

Настройка проекта для iOS

В проект для iOS также через NuGet добавим ту же самую библиотеку sqlite-net-pcl:

SQLite в Xamarin iOS

После добавления библиотек добавим в проект для iOS следующий класс:

using System;
using Xamarin.Forms;
using System.IO;
using SQLiteApp.iOS;

[assembly: Dependency(typeof(SQLite_iOS))]
namespace SQLiteApp.iOS
{
    public class SQLite_iOS : ISQLite
    {
        public SQLite_iOS() { }
        public string GetDatabasePath(string sqliteFilename)
        {
            // определяем путь к бд
            string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            string libraryPath = Path.Combine(documentsPath, "..", "Library"); // папка библиотеки
            var path = Path.Combine(libraryPath, sqliteFilename);
            
            return path;
        }
    }
}

Настройка проекта для Android

Подобные действия проведем в проекте для Androida. Сначала добавим ту же самую библиотеку через NuGet:

SQLite в Xamarin Android

Далее добавим в проект класс, реализующий интерфейс ISQLite:

using System;
using SQLiteApp.Droid;
using System.IO;
using Xamarin.Forms;

[assembly: Dependency(typeof(SQLite_Android))]
namespace SQLiteApp.Droid
{
    public class SQLite_Android : ISQLite
    {
        public SQLite_Android() { }
        public string GetDatabasePath(string sqliteFilename)
        {
            string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            var path = Path.Combine(documentsPath, sqliteFilename);
            return path;
        }
    }
}

Данный класс аналогично создает подключение к базе данных.

Настройка проекта для UWP

В проект для UWP также установим ту же самую библиотеку. И также добавим такой же класс в проект для UWP:

using System.IO;
using Windows.Storage;
using Xamarin.Forms;
using SQLiteApp.UWP;

[assembly: Dependency(typeof(SQLite_UWP))]
namespace SQLiteApp.UWP
{
    public class SQLite_UWP : ISQLite
    {
        public SQLite_UWP() { }
        public string GetDatabasePath(string sqliteFilename)
        {
			// для доступа к файлам используем API Windows.Storage
            string path = Path.Combine(ApplicationData.Current.LocalFolder.Path, sqliteFilename);
            return path;
        }
    }
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850