Xamarin Forms: SQLite3 подключение и работа с базой данных

Этот урок описывает работу с базой данных SQLite3 в Xamarin Forms: подключение, создание формы и добавление товаров. SQLite выбран за простоту и отсутствие необходимости в отдельном сервере – база данных встраивается в проект.

Установка SQLite

Для работы с SQLite установите библиотеку sqlite-net-pcl:

  1. Откройте проект.
  2. Запустите Управление пакетами NuGet.
  3. Перейдите на вкладку Обзор.
  4. Найдите sqlite-net-pcl.
  5. Установите библиотеку.

Библиотека появится в списке зависимостей проекта.

Модель данных (класс Item)

Создайте класс Item для описания таблицы базы данных (например, правой кнопкой мыши на проекте -> Добавить -> Класс). Класс должен быть объявлен как public.

Поля класса:

  • ID: Уникальный идентификатор (целое число, integer). Аннотации [PrimaryKey] и [AutoIncrement] обеспечивают автоматическую генерацию и присвоение уникального значения.
  • Title: Название товара (string).
  • Description: Описание товара (string).
  • Image: URL изображения товара (string).
  • Price: Цена товара (integer).

Код класса Item:

using SQLite;

[Table("Item")]
public class Item
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string Image { get; set; }
    public int Price { get; set; }
}

Аксессоры get; set; обязательны.

Класс для работы с базой данных (Database)

Создайте класс Database для подключения к базе данных и выполнения операций.

Класс содержит:

  • Поле Connection типа SQLiteConnection (только для чтения, readonly). Объект для работы с базой данных.
  • Конструктор, принимающий путь к файлу базы данных. Создает объект SQLiteConnection и вызывает CreateTable для создания таблицы Item (если она не существует).
  • Метод GetItems(), возвращающий список товаров из таблицы Item.
  • Метод SaveItem(), сохраняющий объект Item в базе данных и возвращающий ID новой записи.

Код класса Database:

using SQLite;
using System.Collections.Generic;
using System.IO;

public class Database
{
    private readonly SQLiteConnection Connection;

    public Database(string dbPath)
    {
        Connection = new SQLiteConnection(dbPath);
        Connection.CreateTable<Item>();
    }

    public List<Item> GetItems()
    {
        return Connection.Table<Item>().ToList();
    }

    public int SaveItem(Item item)
    {
        return Connection.Insert(item);
    }
}

Настройка подключения в App.cs

В App.cs добавьте статическое поле DB типа Database и аксессор для него. В аксессоре создайте объект Database с путем к файлу базы данных, используя Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData).

using System;
using System.IO;
using Xamarin.Forms;
using System.Environment;

namespace YourAppName // Замените YourAppName на имя вашего приложения
{
    public partial class App : Application
    {
        public static Database DB { get; private set; }

        public App()
        {
            InitializeComponent();

            string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "db.sqlite3");
            DB = new Database(dbPath);

            MainPage = new MainPage();
        }
    }
}

Форма для добавления товаров

Создайте форму (XAML) с полями для ввода данных о товаре и кнопкой «Добавить». Обработчик события клика по кнопке:

  1. Получает данные из полей формы.
  2. Проверяет данные (например, минимальная длина).
  3. Создает объект Item и сохраняет его в базе данных с помощью App.DB.SaveItem().
  4. Очищает поля формы.
  5. Обновляет отображение списка товаров.

Отображение списка товаров

Используйте CollectionView для отображения списка товаров. В ItemTemplate укажите, как отображать каждое поле объекта Item. Обновляйте список товаров после добавления нового (например, в обработчике события кнопки «Добавить»).

Подробный код XAML и C# для формы (MainPage.xaml и MainPage.xaml.cs) опущен из-за объёма, но описан в концептуальном плане.

Урок показал, как подключать и использовать базу данных SQLite3 в Xamarin Forms. Реализованы добавление и отображение товаров. Пример можно расширить, добавив редактирование, удаление и поиск.

Что будем искать? Например,программа