Работа с базой данных windows phone

SQLite в Windows Phone 8.1

Работа с SQLite. Часть 1

SQLite представляет одну из наиболее распространенных реляционных СУБД, которая обладает такими преимуществами, как компактность, кроссплатформенность, переносимость. Поэтому базы данных SQLite нередко используются в мобильной разработке для разных ОС. Рассмотрим, как мы можем использовать SQLite при программирования для Windows Phone 8.1.

Добавление расширений

Для работы с SQLite создадим проект по типу Blank App. И вначале нам надо подключить в Visual Studio расширения. Для этого в главном меню Visual Studio выберем пункты TOOLS -> Extensions and Updates

Здесь нам надо установить два расширения: SQLite for Windows Phone 8.1 и SQLite for Windows Runtime (Windows 8.1)

После их установки добавим в проект соответствующую библиотеку. Для этого нажмем правой кнопкой мыши на узел References ->Add Reference и в списке выберем библиотеку SQLite for Windows Phone 8.1:

После этого в проект будет добавлена данная библиотека. Для взаимодействия с кодом c# также надо добавить еще одну библиотеку, которая позволит нам создавать запросы к базе данных. Для этого нажмем правой кнопкой мыши на узел References ->Manage NuGet Packages. и в поле поиска введем sqlite-pcl:

В списке найдем библиотеку Portable Class Library for SQLite и установим ее.

После добавления в узле References окажутся две одинаковые библиотеки, но с разными версиями:

Библиотеку с более ранней версией мы можем удалить.

Рядом со второй библиотекой будет отображаться желтый треугольник, который показывает, что библиотека не может применяться к любому процессору. А если мы посмотрим на настройки отладки проекта, то увидим, что для проекта установлено Any CPU . Так как цель нашего приложения — смартфон, то изменим тип процессора на ARM :

Создаваемое приложение будет очень простым. Пусть оно будет выводить список книг из библиотеки, а также предоставлять функционал для управления обектами — их созданием, удалением, редактированием и т.д.

И первым делом добавим в проект класс модели, которая будет использоваться — класс Book:

Чтобы легче управлять объектами, было бы лучше создать какую-нибудь абстракцию наподобие репозитория. Поэтому добавим в проект еще один класс BookRepository:

Этот класс производит основную работу с базой данных, и все взаимодействие будет идти через его методы.

Для управления бд в классе определяется переменная типа SQLiteConnection

Метод CreateTable() создает таблицу в бд, если таблица еще не создана. Для выполенния sql-запросов используются методы Prepare и Step() :

Методы Insert() , Update() и Delete() соответственно добавляют, обновляют и удаляют объекты. Здесь опять же используется практически стандартный синтаксис запросов sql за тем исключением, что для связи параметров с запросом используется метод Bind . Он связывает значения с параметрами, например, statement.Bind(1, book.Name)

И методы GetBooks() и GetBook() соответственно получают набор объектов и один единственный объект по id.

Теперь добавим в проект страницы и определим логику для манипуляции объектами из пользовательского интерфейса.

Создание локальной базы данных для Windows Phone

Дополнительные материалы к занятию можно скачать здесь.

Вложенные папки: LocalDataBaseSample

В новой версии операционной системы Windows Phone OS 7.1 появилась возможность хранить информацию в реляционных базах данных, которая выступает в роли изолированного контейнера приложения. Для работы с базами данных приложения Windows Phone используют операторы LINQ to SQL . С помощью LINQ to SQL можно задать схему базы данных , осуществлять извлечение данных , а также сохранять изменения в файле базы данных .

Читайте также:  Linux feature software system

На рис. 33.1 показана связь между приложением и изолированным хранилищем. Для связи с хранилищем в приложении создается объект DataContext.

Перед началом работы с локальной базой данных нужно учесть следующее.

LINQ to SQL используется в качестве ORM engine
Файл базы данных хранится в изолированном хранилище
Для извлечения данных используется LINQ, T-SQL не подходит
Локальная база данных в Windows Phone Mango не увеличивает объем приложения, так как является частью универсальной исполняющей машины
К проекту нужно добавить ссылку на сборку System.Data.Linq
При написании строки подключения используется специфический формат, подобный:

В данной работе мы создадим базу данных, в главной таблице которой будут храниться классы позвоночных животных, а в подчиненной таблице — виды. За основу мы взяли пример, описанный на сайте Microsoft (http://msdn.microsoft.com/en-us/library/ff431744(v=vs.92).aspx), и немного его переработали.

Для работы нам потребуется новая сборка Microsoft.Phone.Controls.Toolkit.dll. Ее можно скачать по адресу: http://silverlight.codeplex.com/releases/view/60291. После инсталляции файла SilverlightforWindowsPhoneToolkit-Feb2011.msi можно узнать местонахождения файла Microsoft.Phone.Controls.Toolkit.dll следующим образом. Выполните следующую последовательность действий: Пуск -> Все программы -> Microsoft Silverlight for Windows Phone Toolkit -> Binaries. Эта сборка содержит следующие полезные компоненты:

AutoCompleteBox
ContextMenu
DatePicker
GestureService/GestureListener
ListPicker
LongListSelector
Page Transitions
PerformanceProgressBar
TiltEffect
TimePicker
ToggleSwitch
WrapPanel

Нам потребуется элемент управления ListPicker. Для успешной разработки приложения нужно скачать и установить Windows Phone SDK 7.1 Beta 2 по адресу http://create.msdn.com/en-us/home/getting_started.

В Visual Studio создаем новое приложение Silverlight for Windows Phone . Назовем его LocalDataBaseSample. В пункте Target Windows Phone Version выберите Windows Phone 7.1.

Скопируйте файл Microsoft.Phone.Controls.Toolkit.dll, описанный выше в папку вашего проекта, например, в папку …\LocalDatabaseSample\LocalDatabaseSample\Bin\Debug. Подключите сборку к проекту, выполнив следующие действия: Solution Explorer -> References -> Add Reference -> Path… -> Microsoft.Phone.Controls.Toolkit.dll.

Далее, нам потребуется подключить к проекту ссылку на сборку System . Data . Linq : Solution Explorer -> References -> Add Reference -> .Net -> System.Data.Linq -> OK.

Для нашего приложения необходимы четыре иконки: appbar. add .rest.png, appbar. cancel .rest.png, appbar. check .rest.png, appbar. delete .rest.png, расположенные по адресу:

C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Icons\dark (64-х разрядные операционные системы)

C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Icons\dark (32-х разрядные операционные системы)

Создайте папку Images (Solution Explorer -> Add -> Create Folder -> Images), скопируйте туда иконки и добавьте к проекту (Solution Explorer -> Images -> Add -> Existent Item).

Создание локальной базы данных для Windows Phone

Дополнительные материалы к занятию можно скачать здесь.

Вложенные папки: LocalDataBaseSample

В новой версии операционной системы Windows Phone OS 7.1 появилась возможность хранить информацию в реляционных базах данных, которая выступает в роли изолированного контейнера приложения. Для работы с базами данных приложения Windows Phone используют операторы LINQ to SQL . С помощью LINQ to SQL можно задать схему базы данных , осуществлять извлечение данных , а также сохранять изменения в файле базы данных .

На рис. 33.1 показана связь между приложением и изолированным хранилищем. Для связи с хранилищем в приложении создается объект DataContext.

Перед началом работы с локальной базой данных нужно учесть следующее.

LINQ to SQL используется в качестве ORM engine
Файл базы данных хранится в изолированном хранилище
Для извлечения данных используется LINQ, T-SQL не подходит
Локальная база данных в Windows Phone Mango не увеличивает объем приложения, так как является частью универсальной исполняющей машины
К проекту нужно добавить ссылку на сборку System.Data.Linq
При написании строки подключения используется специфический формат, подобный:

В данной работе мы создадим базу данных, в главной таблице которой будут храниться классы позвоночных животных, а в подчиненной таблице — виды. За основу мы взяли пример, описанный на сайте Microsoft (http://msdn.microsoft.com/en-us/library/ff431744(v=vs.92).aspx), и немного его переработали.

Для работы нам потребуется новая сборка Microsoft.Phone.Controls.Toolkit.dll. Ее можно скачать по адресу: http://silverlight.codeplex.com/releases/view/60291. После инсталляции файла SilverlightforWindowsPhoneToolkit-Feb2011.msi можно узнать местонахождения файла Microsoft.Phone.Controls.Toolkit.dll следующим образом. Выполните следующую последовательность действий: Пуск -> Все программы -> Microsoft Silverlight for Windows Phone Toolkit -> Binaries. Эта сборка содержит следующие полезные компоненты:

AutoCompleteBox
ContextMenu
DatePicker
GestureService/GestureListener
ListPicker
LongListSelector
Page Transitions
PerformanceProgressBar
TiltEffect
TimePicker
ToggleSwitch
WrapPanel

Нам потребуется элемент управления ListPicker. Для успешной разработки приложения нужно скачать и установить Windows Phone SDK 7.1 Beta 2 по адресу http://create.msdn.com/en-us/home/getting_started.

В Visual Studio создаем новое приложение Silverlight for Windows Phone . Назовем его LocalDataBaseSample. В пункте Target Windows Phone Version выберите Windows Phone 7.1.

Скопируйте файл Microsoft.Phone.Controls.Toolkit.dll, описанный выше в папку вашего проекта, например, в папку …\LocalDatabaseSample\LocalDatabaseSample\Bin\Debug. Подключите сборку к проекту, выполнив следующие действия: Solution Explorer -> References -> Add Reference -> Path… -> Microsoft.Phone.Controls.Toolkit.dll.

Далее, нам потребуется подключить к проекту ссылку на сборку System . Data . Linq : Solution Explorer -> References -> Add Reference -> .Net -> System.Data.Linq -> OK.

Для нашего приложения необходимы четыре иконки: appbar. add .rest.png, appbar. cancel .rest.png, appbar. check .rest.png, appbar. delete .rest.png, расположенные по адресу:

C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Icons\dark (64-х разрядные операционные системы)

C:\Program Files\Microsoft SDKs\Windows Phone\v7.1\Icons\dark (32-х разрядные операционные системы)

Создайте папку Images (Solution Explorer -> Add -> Create Folder -> Images), скопируйте туда иконки и добавьте к проекту (Solution Explorer -> Images -> Add -> Existent Item).

Работа с данными в мобильных приложениях. Реализуем offline хранилище и синхронизацию данных используя Microsoft Azure и SQLite

Сейчас на рынке есть огромное количество приложений, которые не приспособлены для работы offline, что создает неудобства для пользователей.
Некоторое время назад, для разработчиков на C# стал доступен новый Microsoft Azure Mobile Services SQLiteStore SDK 1.0 alpha, который предоставляет API для создания приложения, работающих в условиях отсутствия интернета и берущий на себя все заботы о синхронизации данных между локальной базой данных и базой данных Azure. В качестве локальной базы данных создается и используется SQLite.

Итак, у нас есть следующие популярные способы организации offline хранилища:

  • Сериализация в XML, JSON или другой NoSQL.
  • SQLite или другие сторонние БД.

Механизмы синхронизации:

  • Каждый раз обновляется локальная копия базы полностью.
  • Только изменения передаются по сети.

Средства синхронизации:

  • Sync Framework Toolkit
  • Azure SQL Data Sync
  • Разработка собственной логики и библиотек для синхронизации.
  • Microsoft Azure Mobile Services SQLiteStore SDK 1.0 alpha (! Новое)

Azure Mobile Services SDK для синхронизации

Функциональность нового Microsoft Azure Mobile Services SQLiteStore SDK 1.0 alpha для синхронизации данных не идентична Sync Framework или Azure Data Sync.

С точки зрения клиентской стороны, пока есть возможность работать только с SQLite, но создатели обещают, что возможности будут развиваться и другие клиентские БД добавятся позже.

Серверная сторона поддерживает следующие базы данных: SQL Database, MongoDB и Azure Table Storage.

SDK поддерживает следующие операции: Push (отправка на сервер), Pull (загрузка с сервера), Purge (очистка локального хранилища).

Сегодня мы остановимся на том, как создать бэкенд для вашего приложения используя Microsoft Azure Mobile Services SQLiteStore SDK 1.0 alpha.

Для работы нам понадобится:

  • Подписка Azure — на сайте можно оформить trial на месяц
  • Windows 8.1
  • Visual Studio 2013 Update 2

Наша задача будет состоять из следующих пунктов:

  • Создание мобильного сервиса и мобильной БД в Microsoft Azure;
  • Создание проекта приложения. Мы будем делать универсальное приложение в Visual Studio.
  • Создание локальной БД приложения.
  • Реализации синхронизации данных.

Давайте приступим…

Настройка Azure Mobile Services

1. Чтобы создать Azure Mobile Service для вашего проекта, необходимо открыть Microsoft Azure Portal и перейти в меню Mobile ServicesNew

Создавая облачный сервис, вы можете выбрать на каком языке вы будете писать код сервиса. На С# или JavaScript.

2. Когда мобильный сервис создастся, на главной странице сервиса, вы сможете найти инструкции, как использовать его в приложениях для многих популярных платформ и фреймфорков, таких как Windows, Windows Phone, IOS, Android, Xamarin.

3. Вы можете скачать шаблон проекта облачного сервиса, доработать его код, например, поправив модель данных как на скриншоте ниже.

4. Затем, опубликовать в облаке из Visual Studio.

Как разработать и опубликовать облачный сервис достаточно подробно написано тут.

Создаем проект приложения

1. Я буду использовать проект универсального приложения для Windows и Windows Phone.

2. После создания проекта, подключим необходимые библиотеки. Так как у нас проект и для Windows и для Windows Phone, то установить WindowsAzure.MobileServices надо для обоих проектов.

3. В общем проекте (Shared), открываем App.xaml.cs и добавляем туда объявление мобильного сервиса:

4. Теперь мы можем работать с данными через облачный сервис и сохранять данныe в БД.

Создание локальной базы данных и синхронизация

Теперь нам надо создать локальное хранилище данных SQLite.

2. Добавим SQLite в качестве используемой библиотеки для наших приложений Windows и Windows Phone.

3. Установим и добавим в References пакет WindowsAzure.MobileServices.SQLiteStore

4. Откроем Shared проект и создадим там новый пустой класс с моделью данных. В моем случае, он получился вот такой:

5. Создадим вспомогательный класс, который будет создавать нам локальную базу данных, уметь наполнять её данными и отправлять данные в облачный сервис.

Интерфейс приложения

1. Откроем MainPage.xaml и добавим туда кнопки для заполнения таблицы данными и синхронизации.

2. Добавим в MainPage.xaml.cs код для обработки событий.

Запуск и проверка

1. Запустим приложение и посмотрим как оно работает.

2. Как только мы запустили приложение, у нас уже создалась локальная база SQLite. Мы можем найти её в папке приложения и посмотреть. Для этого я буду использовать SQLite Browser.

Моя БД лежит тут: C:\Users\[username]\AppData\Local\Packages\[app id]\LocalState

Как видите, сейчас она пустая.

3. Добавим в неё элемент, нажав на кнопку Add Item нашего приложения.

4. Данные в базе обновятся и туда добавится запись, но наша облачная БД всё еще пуста.

5. Теперь нажмем на кнопку Sync в приложении для синхронизации баз данных и смотрим результат.

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

Может так оказаться, что создание локальной БД упадет с ошибкой. Тогда найдите и добавьте в References сборку SQLitePCL.Ext.dll. Сама она почему-то не всегда устанавливается NuGet’ом.

Заключение

Новый Microsoft Azure Mobile Services и его SDK имеет много новых полезных возможностей для разработчиков приложений. Одна из них – это поддержка offline работы и синхронизации данных для приложений. Следуя этой инструкции, вы можете настроить синхронизацию данных для вашего Phone или Windows приложения не тратя много времени на сложные алгоритмы и написание библиотек.

Читайте также:  Amd phenom ii x4 955 windows 10
Оцените статью