Узнайте, как писать код в приложениях Магазина Windows для Windows 8, которые работают со структурированными данными в SQLite — популярной базе данных, знакомой разработчикам приложений для Android.
Вашему приложению может потребоваться работа с данными, которые являются более сложными, чем простые пары ключ-значение — например, сложный заказ на продажу или опрос с комментариями. Для данных такого типа вы можете использовать базу данных. Одним из популярных вариантов является SQLite — автономное ядро реляционной транзакционной базы данных с нулевой конфигурацией, которое поддерживаются приложениями Android и Windows Store.
Вот как это сделать:
- Установите SQLite.
- Ссылка на это из приложения Магазина Windows.
- Получите вспомогательную библиотеку, чтобы упростить кодирование.
- Напишите код для создания таблицы базы данных.
- Добавить, получить, изменить и удалить записи таблицы.
Установка SQLite
Первое, что вам нужно сделать, это установить приложения SQLite для Магазина Windows. Это можно сделать, загрузив пакет среды выполнения SQLite для Windows.
-
В Visual Studio откройте
меню « Сервис» и выберите «
Расширения и обновления». - В дереве слева от окна « Расширения и обновления» нажмите « Онлайн» , затем щелкните « Галерея Visual Studio» .
- Затем введите sqlite в поле поиска в верхнем правом углу и нажмите Enter .
-
SQLite для среды выполнения Windows должен появиться пакет. Нажмите
Скачать .
-
Вам будет предложено нажать
Установить . Сделай так.
-
После установки пакета вам нужно будет перезапустить Visual Studio
Android-совет |
Пакет среды выполнения SQLite для Windows в Visual Studio аналогичен пакету android.database.sqlite. |
Добавление ссылки на SQLite
Теперь, когда SQLite установлен, вам нужно добавить ссылку на него из вашего проекта.
-
Щелкните правой кнопкой мыши
папку « Ссылки » в своем проекте Магазина Windows и выберите «
Добавить ссылку». - В дереве в левой части окон Reference Manager разверните узлы Windows и Extensions .
-
Затем выберите
SQLite для Windows Runtime и
Microsoft Visual C ++ Runtime Package и нажмите
OK. -
Теперь вы должны увидеть, как расширения отображаются в
папке « Ссылки » для вашего проекта.
Совет по Visual Studio |
После добавления этих ссылок проект вашего приложения не может быть собран или запущен. Чтобы это исправить, в меню « Сборка» выберите « Диспетчер конфигурации» . В поле Платформа активного решения выберите конкретную целевую платформу, например ARM , x64 или x86 . Затем нажмите Закрыть . |
Получение вспомогательных классов
Последнее, что вам нужно сделать, — это получить несколько вспомогательных классов, которые немного упростят работу с SQLite. Есть ряд доступных для приложений Магазина Windows. Те, которые я предпочитаю использовать, взяты из библиотеки sqlite-net .
Библиотеку sqlite-net можно получить из NuGet с помощью следующих шагов
-
Щелкните правой кнопкой мыши
папку « Ссылки » в вашем проекте Магазина Windows и выберите «
Управление пакетами NuGet»… - Разверните узел Online в левой части окна.
- Введите sqlite в поле поиска в верхней правой части окна и нажмите Enter .
-
Выберите
sqlite-net и нажмите «
Установить» .
-
В ваш проект будут добавлены два исходных файла:
SQLite.cs и
SQLiteAsync.cs .
- Создайте свой проект, нажав F6, чтобы убедиться, что он настроен правильно.
Совет по Visual Studio |
NuGet — это расширение Visual Studio, которое упрощает установку и обновление сторонних библиотек и инструментов в Visual Studio. Чтобы узнать больше о NuGet, см. Галерею NuGet. После знакомства с NuGet вам может оказаться проще использовать версию NuGet для командной строки. Чтобы перейти к нему в Visual Studio, в меню Сервис выберите Диспетчер пакетов библиотеки > Консоль диспетчера пакетов . |
Использование SQLite
В последней части этого раздела мы рассмотрим, как выполнять некоторые базовые задачи с SQLite в приложении Windows Store.
Создание таблицы
Первый шаг, который вам нужно сделать, — создать таблицу, которую будет использовать ваше приложение. Например, предположим, что ваше приложение хранит записи блога в таблице SQLite. Используя пакет sqlite-net , полученный вами в предыдущем разделе, вы можете определить таблицу, просто написав класс.
public class Post { [PrimaryKey] public int Id { get; set; } public string Title { get; set; } public string Text { get; set; } }
В PrimaryKey атрибуты приходят из SQLITE-нетто пакета. Пакет предоставляет ряд атрибутов, которые позволяют вам определять схему таблицы.
Как только таблица определена, ее нужно создать, что можно сделать так:
private async void CreateTable() { SQLiteAsyncConnection conn = new SQLiteAsyncConnection("blog"); await conn.CreateTableAsync<Post>(); }
Параметр «blog» в конструкторе для класса SQLiteAsyncConnection просто указывает путь к базе данных SQLite.
Тип Post, указанный в вызове метода CreateTableAsync, указывает тип таблицы, которая должна быть создана. Это сопоставляется с классом Post, созданным ранее.
Android-совет |
В приложениях Android вы создаете таблицу, которая расширяет класс SQLiteOpenHelper с помощью следующего кода. |
public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE Post ( Id INTEGER PRIMARY KEY, Title TEXT, Text TEXT )"); }
Вставка записи
Теперь, когда таблица создана, к ней можно добавить записи с помощью следующего кода:
public async void InsertPost(Post post) { SQLiteAsyncConnection conn = new SQLiteAsyncConnection("blog"); await conn.InsertAsync(post); }
Android-совет |
В приложениях для Android вы можете добавить запись с таким кодом. |
public void insertPost(SQLiteDatabase db, String title, String text ) { ContentValues values = new ContentValues(); values.put("Title", title); values.put("Text", text); long newRowId; newRowId = db.insert("Post", null, values); }
Получение записей
Получить отдельные записи из таблицы с помощью следующего:
public async Task<Post> GetPost(int id) { SQLiteAsyncConnection conn = new SQLiteAsyncConnection("blog"); var query = conn.Table<Post>().Where(x => x.Id == id); var result = await query.ToListAsync(); return result.FirstOrDefault(); }
Android-совет |
В приложениях Android вы можете вернуть объект Cursor, содержащий одну запись с таким кодом. |
public Cursor getPost(SQLiteDatabase db, Integer id){ String[] projection = {"Id", "Title", "Text" }; String selection = "Id LIKE ?"; String[] selelectionArgs = { String.valueOf(id) }; Cursor c = db.query( "Post", projection, selection, selectionArgs, null, null, null); return c; }
Получить всю запись из таблицы следующим образом:
public async Task<List<Post>> GetPosts() { SQLiteAsyncConnection conn = new SQLiteAsyncConnection("blog"); var query = conn.Table<Post>(); var result = await query.ToListAsync(); return result; }
Android-совет |
В приложениях для Android вы можете вернуть объект Cursor, содержащий все записи с таким кодом. |
public Cursor getPosts(SQLiteDatabase db){ String[] projection = { "Id", "Title", "Text" }; Cursor c = db.query( "Post", projection, null, null, null, null, null); return c; }
Обновление записи
Для обновления записи требуется следующий код:
public async void UpdatePost(Post post) { SQLiteAsyncConnection conn = new SQLiteAsyncConnection("blog"); await conn.UpdateAsync(post); }
Android-совет |
В приложениях для Android вы можете обновить запись с помощью кода, подобного этому. |
public void updatePost(SQLiteDatabase db, Integer id, String title, String text ) { ContentValues values = new ContentValues(); values.put("Title", title); values.put("Text", text); String selection = "Id LIKE ?"; String[] selelectionArgs = { String.valueOf(id) }; int count = db.update("Post, values, selection, selectionArgs); }
Удаление записи
Запись может быть удалена с помощью следующего:
public async void DeletePost(Post post) { SQLiteAsyncConnection conn = new SQLiteAsyncConnection("blog"); await conn.DeleteAsync(post); }
Android-совет |
В приложениях для Android вы можете удалить запись с таким кодом. |
public void deletePost(SQLiteDatabase db, Integer id ) { String selection = "Id LIKE ?"; String[] selelectionArgs = { String.valueOf(id) }; db.delete("Post", selection, selectionArgs); }
Следующие шаги
Чтобы узнать больше о том, как работать с SQLite, посмотрите эти ресурсы.