В этой серии постов, я опишу, как построить SQLite приложение, которое будет работать в средах выполнения Windows устройств (Windows 8.1 и Windows Phone 8.1).
В первой стать я кратко рассказал об универсальных приложениях и о том, как добавить SQLite в проект.
Во второй части мы рассмотрим, как использовать универсальный проект, чтобы избежать ненужного дублирования кода посредством совместного использования, которое остается одинаковыми для Windows Store приложений и для Windows Phone Store приложений, и как воспользоваться SQLite для управления локально хранимыми данными.
В первом посте мы создали универсальное приложение, со всеми правильными ссылками на SQLite библиотеки.
Чтобы помочь нам скрыть все сложности вызова SQLite API мы добавим sqlite-net библиотеку на оба проекта: Windows, и Windows Phone, используя NuGet:
В результате, у нас будет по две копии файлов «SQLite.cs» и «SQLiteAsync.cs», один в проекте Windows, и один в проекте Windows Phone:
Чтобы избежать ненужного дублирования, давайте начнем с использования общего проекта:
Переместите одну копию «SQLite.cs» и «SQLiteAsync.cs» файлов в общий проект. Удалите вторую копию.
В конце концов получим:
Использование sqlite-net очень просто, и есть много постов, описывающих, как это делать, например, Using SQLite in your Windows 8 Metro style applications от Matteo Pagani.
Рассмотрим основные операции:
Открыть таблицу под названием “People.db” (будет создана, если несуществует) :
По-умолчанию таблица будет создаваться sqlite-net библиотекой в:
Так можно проверить наличие базы данных:
Создание таблицы
Для начала необходимо создать класс, который будет представлять оду таблицу
Как вы видите, есть возможность пользоваться атрибутами, которые определенны в sqlite-net библиотеке. Вот весь перечень доступных атрибутов:
Атрибуты классов:
- [Table(Name)]
Атрибуты свойств:
- [AutoIncrement]
- [PrimaryKey]
- [Column(Name)]
- [Indexed] | [Indexed(string name, int order)]
- [Unique]
- [Ignore]
- [MaxLength(int length)]
- [Collation(string name)]
- [NotNull]
Конечно же класс User это наша модель, которая будет использоваться в обоих проектах, поэтому создадим папку Model в шареном проекте:
Теперь, когда мы определили класс для новой таблицы, можно создать ее, используя подключение к базе данных:
Метод будет проверять существование таблицы в файле данных SQLite и если не найдет ее — создаст. Кроме того, если класс, который представляют собой таблицу, изменился, метод будет пытаться обновить таблицу SQLite (на самом деле, поддерживается только добавление новых столбцов)
Стоит отметить, что метод не будет уничтожать существующую таблицу.
Запись в таблицу
Это очень легко!
Несколько записей одновременно
Любую IEnumerable коллекцию можно добавить в таблицу:
Получение содержимого
Мы можем обращаться к таблице использую Linq:
или же обычные запросы:
SQL команды могут содержать параметры:
Обновление
Уже записанные данные можно легко изменить на уровне модели, сохраняя их в базе данных
Удаление
Удаление записи
Удаление таблицы
Проще простого!:
Демо
Чтобы продемонстрировать, как использовать SQLite-чистую библиотеку я создал очень простое демонстрационное приложение.
Для простоты я не использовал MVVM. Более того, я создал одну страницу XAML как для Windows, так для и Windows Phone проекта. В рабочем коде вы, вероятно, используете MVVM (Model View ViewModel) и некоторое количество страниц XAML, специально разработанных для каждой платформы.
Чтобы продемонстрировать использование (или злоупотребления, в данном случае), я создал отдельную страницу XAML в общем проекте. десь вы можете увидеть CommandBar, которой на Windows Phone показывает PrimaryCommands (максимум пять) и SecondaryCommands (MenuItems):
Поскольку файл XAML является одинаковым как для Windows так и для Windows Phone, я перенес его в общий проект и удалил из обоих.
В конце концов получилось следующее:
Демо из Windows Phone
Это заключение второго поста о том, как использовать универсальное приложение избегая ненужного дублирования кода посредством совместного использования, которые остаются одинаковыми для Windows Store и для Windows Phone Store, и как воспользоваться SQLite для локального управления хранимыми данными.
Ссылка на источник: Universal App with SQLite – Part 2
Добавить комментарий