Windows ストアアプリでデータベース(SQLite 3)を使う

執筆日時:

f:id:daruyanagi:20120924010032g:plain

UPDATED HOWTO: SQLite with Windows 8 apps
http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-store-apps.aspx

@kaorun さんのはてブ経由で知った。前試したときはうまくいかなかったのだけど、今回はうまくできたっぽい。ポータブルなデータベースはやっぱりほしいよねぇ……。

拡張機能「SQLite for Windows Runtime」をインストール

f:id:daruyanagi:20120924003514p:plain

グローバルにインストールされるので、最初に一度やればよい。

NuGet パッケージ「sqlite-net」をインストール

f:id:daruyanagi:20120924003710p:plain

これはプロジェクトごとにインストール。マネージドで扱うためのラッパーのようで、C# のソースコードで提供されている。Visual Basic で使いたい場合は一工夫必要みたい。

参照の追加

f:id:daruyanagi:20120924004222p:plain

「Microsoft Visual C++ Runtime Pakage」と「SQLite for Windows Runtime」を参照に追加。

ビルドターゲットを変更

f:id:daruyanagi:20120924004424p:plain

Any CPU では動かないので、ほかの適当なものに変えておく。まぁ、とりあえず x86 とかでいいんじゃないかな。

動かしてみる。

空のテンプレートで、サンプルコードを試してみる。

namespace App1
{
sealed partial class App : Application
{
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;

LoadData(); }

: :

public void LoadData() { var dbPath = Path.Combine( ApplicationData.Current.LocalFolder.Path, "db.sqlite");

using (var db = new SQLite.SQLiteConnection(dbPath)) { db.CreateTable<Person>();

db.RunInTransaction(() => { db.Insert(new Person() { FirstName = "Tim", LastName = "Heuer" }); }); } } } }

public class Person { [SQLite.AutoIncrement, SQLite.PrimaryKey] public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } }

f:id:daruyanagi:20120924004845p:plain

LocalFolder に db.sqlite ができていた。結構簡単に扱えそうで、こりゃいいな。

f:id:daruyanagi:20120924004850p:plain

データもちゃんと入っていたよ!

SQLite の GUI ブラウザは 窓の杜 - SQLite Database Browser あたりが定番かな。