SQLite теперь для мобильных приложений на С# под любую платформу

imageСовсем недавно вышла новая версия библиотеки, которая будет полезна С# разработчикам, разрабатывающим или планирующим разрабатывать кроссплатформенные мобильные приложения.

SQLitePCL может быть использована для реализации локальной базы данных в приложениях для Windows, Windows Store, Windows Phone, Android (Xamarin) и iOS (Xamarin). Она бесплатна и ее код открыт для всех желающих.

Я проверила ее в действии, чем и хочу с вами поделиться.

Создаем проектДля экспериментов нам понадобится проект универсального приложения для Windows и Phone.image

И проекты Xamarin для Android и iOS приложений.

image

Подключаем необходимые библиотеки Для каждого проекта устанавливаем и добавляем в References пакет SQLite-net PCL. Он автоматически установит и SQLitePCL.raw. Это всё, что нам надо будет для использования.image

Создаем базу данных и реализуем CRUD операции Мы будем реализовывать логику работы с данными в уже имеющемся у нас, общем для всех приложений, Shared проекте. Но вы можете делать это и в новой, созданной для этих целей Portable Class Library.Итак, добавим в Shared проект два файла. Один из них MessageItem.cs — будет содержать структуру объекта, который мы будем хранить в базе данных, второй DataBase.cs — реализовывать взаимодействие с БД SQLite.

image

Код MessageItem.cs using SQLite; using System; using System.Collections.Generic; using System.Text;

namespace CrossplatformApp { public class MessageItem { [PrimaryKey, AutoIncrement] public Guid Id { get; set; } public string Text { get; set; } public string User { get; set; } public string Created { get; set; } } } Код DataBase.cs using System; using System.Collections.Generic; using System.Text; using SQLitePCL; using System.Threading.Tasks; using System.Linq; using System.IO; using SQLite;

namespace CrossplatformApp { public class Database { private const string _db = «CrossplatformApp.db»; private SQLiteConnection _connection = null;

public Database (string path) { string _dbpath = Path.Combine (path, _db);

_connection = new SQLiteConnection (_dbpath); _connection.CreateTable(); } ~Database () { if (_connection!=null) _connection.Close (); } public int AddNewItem (MessageItem item) { var result = _connection.Insert (item); return result; }

public int UpdateItem (MessageItem item) { var result = _connection.Update (item); return result; }

public int DeleteItem (MessageItem item) { var result = _connection.Delete (item); return result; }

public IQueryable GetAllItems () { var result = _connection.Table().OrderByDescending (t => t.Created); return result.AsQueryable(); } } } Используем для W8, WP, iOS, Android Посмотрим, как будет работать наша БД на Windows Phone.Перейдем в проект Windows Phone приложения и доработаем основную страницу.

1. Заменим весь XAML код в MainPage.xaml, чтобы сделать простой интерфейс приложения и отображать данные из базы пользователю.

image

MainPage.xaml

2. Напишем код приложения. Создадим БД, наполним данными и выведем их на экран.image

MainPage.xaml.cs Database db = new Database (ApplicationData.Current.LocalFolder.Path); db.AddNewItem (new MessageItem { Id = Guid.NewGuid (), Text = «bla-bla», User = »@MissUFO», Created = DateTime.UtcNow.ToString () });

var messages = db.GetAllItems ();

SampleListView.DataContext = messages; 3. Запустим проект и посмотрим на результат. БД создалась успешно, данные записываются и читаются.image

Для Android и iOS процедура выглядит в точности так же. Вы можете подключить Shared проект в качестве References и пользоваться нашими классами.

image

Заключение Свежая версия библиотеки SQLitePCL вышла только-только, поэтому, если что не так, смотрите документацию и пишите свои проблемы и вопросы на codeplex её авторам.Полезные ссылки Скачать SQLitePCLЧитать документацию по SQLiteСкачать Visual Studio 2013 Update 2

© Habrahabr.ru