SQLiteによるデータベースUWP開発
ローカルデータベースを使用したUWPアプリケーション開発において、データベースにSQLiteを使用することが可能です。
本記事では、SQLite.NETを用いてSQLiteを使用する手順を示します。
インストール
SQLiteのダウンロードページからUniversal App PlatformのVSIXパッケージ(sqlite-uap-****.vsix)をダウンロード&インストールします。ソリューションエクスプローラ→参照→参照の追加で参照マネージャーを開き、Universal Windows→拡張から次の2つを追加します。
- SQLite for Universal App Platfrom
- Visual C++ 2015 Runtime for Universal Windows Platform Apps
ソリューションエクスプローラ→参照→NuGetパッケージの管理でNuGetマネージャーを開き、SQLite.NET PCLをインストールします。
以上でライブラリのインストールは終了です。
サンプルコード
データベースを使用したサンプルとして、ここでは商品情報をデータベースで管理することを考えます。まず、商品情報を表すProductクラスを次のように定義します。
using SQLite.Net.Attributes;
class Product
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Title { get; set; }
}
Productクラスはint型のIdプロパティとstring型のTitleプロパティを持ちます。
Idプロパティには、PrimaryKeyとAutoIncrementの属性を付加しています。これは、Idプロパティが主キーであると同時に、データベース格納時に自動的に値が設定されることを示しています。 すなわち、Productクラスはデータベースのテーブル定義として利用されます。
次に、Productクラスをデータベースで管理する一連のコードを示します。
using SQLite.Net;
using SQLite.Net.Platform.WinRT;
// コネクションの作成
string storagePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "Storage.sqlite");
using (var db = new SQLiteConnection(new SQLitePlatformWinRT(), storagePath))
{
// テーブルの作成
db.CreateTable<Product>();
// テーブル情報の取得
var info = db.GetMapping(typeof(Product));
// データの挿入
Product product = new Product() { Title = "Hoge" };
db.Insert(product);
// データの取得
var items = db.Table<Product>().Where(x => x.Id == 1);
// データの更新
product.Title = "Fuga";
db.Update(product);
// データの削除1 (オブジェクトの指定)
db.Delete(product);
// データの削除2 (条件の指定)
db.Execute("DELETE FROM Person WHERE Id = ?", product.Id);
}
データベースとのコネクションを接続するために、SQLiteConnectionクラスのインスタンスを生成します。SQLiteConnectionクラスのコンストラクタには、プラットフォームの種類とデータベースの場所を指定します。
データベースにテーブルを定義するには、CreateTable<>()メソッドを使用します。また、テーブルの情報はGetMapping()メソッドで取得できます。
データの削除は、削除対象のオブジェクトがあればDelete()メソッドを使用します。オブジェクトがない場合は、Execute()メソッドによりSQL文を直接実行することで削除できます。