SQLLite-netは、C#から、SQLiteを使用するためのツールキットです。ドキュメントを和訳しました。
翻訳元「Asynchronous-API」の最終更新日は、2018年3月14日です。
あなたは、呼び出しがブロックされない「非同期API」を使用することができます。あなたは、応答性を高めるために、モバイル・アプリケーションに、非同期APIを使いたいと思うかもしれません。
非同期ライブラリは、Task Parallel Library (TPL) を使用します。このように、Task オブジェクトの通常の使用、そして、async および await キーワードは、あなたのために動作します。
一旦、あなたが、エンティティを定義する場合、あなたは、CreateTableAsyncを呼び出すことによって、テーブルを自動的に生成することができます:
var conn = new SQLiteAsyncConnection("foofoo");
conn.CreateTableAsync<Stock>().ContinueWith((results) =>
{
Debug.WriteLine("Table created!");
});
あなたは、Insertを使用して、データベースに行を挿入できます。テーブルに、自動インクリメントされた主キーが含まれている場合、そのキーの値は、挿入後に利用できるようになります:
Stock stock = new Stock()
{
Symbol = "AAPL"
};
var conn = new SQLiteAsyncConnection("foofoo");
conn.InsertAsync(stock).ContinueWith((t) =>
{
Debug.WriteLine("New customer ID: {0}", stock.Id);
});
類似したメソッドが、UpdateAsyncとDeleteAsyncのために存在します。
データのクエリは、Tableメソッドを使用して、最も簡単に実行できます。これは、AsyncTableQueryインスタンスが返され、あなたは、WHERE句による制約やORDER BYの追加のための述語を追加できます。特別な取得メソッド ― ToListAsync、FirstAsync、FirstOrDefaultAsync ― の1つが呼び出されるまで、データベースは、物理的に変更されません。
var conn = new SQLiteAsyncConnection("foofoo");
var query = conn.Table<Stock>().Where(v => v.Symbol.StartsWith("A"));
query.ToListAsync().ContinueWith((t) =>
{
foreach (var stock in t.Result)
Debug.WriteLine("Stock: " + stock.Symbol);
});
利用できる低レベルのメソッドが、いくつかあります。あなたは、QueryAsyncメソッドによって、直接、データベースを問い合わせることもできます。InsertAsyncなどによって提供される変更操作に加えて、あなたは、ExecuteAsyncメソッドを発行して、データベース内で、直接、データ・セットを変更できます。
役に立つもう一つメソッドは、ExecuteScalarAsyncです。これは、あなたが、簡単に、データベースからスカラー値を返すことができます:
var conn = new SQLiteAsyncConnection("foofoo");
conn.ExecuteScalarAsync<int>("select count(*) from Stock", null).ContinueWith((t) =>
{
Debug.WriteLine(string.Format("Found '{0}' stock items.", t.Result));
});