SQLLite-netは、C#から、SQLiteを使用するためのツールキットです。ドキュメントを和訳しました。
翻訳元「Getting Started」の最終更新日 2022年8月26日です。
sqlite-netは、.NET環境で、SQLiteを、とても簡単に操作できるように設計されています。
ライブラリには、テーブルの構築を制御するために使用できる単純な属性が含まれています。この基本的な例では、あなたは、オブジェクト・マッピングに基づいて、すばやくテーブルを生成する方法と、データベースからアイテムを挿入および選択する方法を学習します。
あなたが、最初に、プロジェクトを開始するとき、あなたは、既に、複数のテーブルで設定したSQLiteデータベースを持っているかもしれません。このアプローチには、何も問題はありません。-しかしながら、このライブラリは、あなたが、あなたのモデルに基づいて、新しいテーブルを生成するために、ORM (オブジェクト・リレーショナル・マッピング)を使用できます。
StockとValuationという2つの新しいクラスを作成しましょう。これらのクラスは、私たちの最初のORM (オブジェクト・リレーショナル・マッピング) として機能します。
[Table("Stocks")]
public class Stock
{
[PrimaryKey, AutoIncrement]
[Column("id")]
public int Id { get; set; }
[Column("symbol")]
public string Symbol { get; set; }
}
[Table("Valuation")]
public class Valuation
{
[PrimaryKey, AutoIncrement]
[Column("id")]
public int Id { get; set; }
[Indexed]
[Column("stock_id")]
public int StockId { get; set; }
[Column("time")]
public DateTime Time { get; set; }
[Column("price")]
public decimal Price { get; set; }
}
クラスとそれぞれのフィールドの上にあるデコレータは、ライブラリが、データベースをより効率的にマッピングするのに役立ちます:あなたは、データベース自体で、エンティティ関係を作成、あるいは、指定する必要はありません。
次に、私たちは、DatabaseHandlerクラスを作成します。このクラスは、クエリとコマンドだけでなく、テーブルの生成も処理します。
public class DatabaseHandler {
private SQLiteConnection _db;
public DatabaseHandler() {
_db = new SQLiteConnection("path/to/your/database");
_db.CreateTable<Stock>();
_db.CreateTable<Valuation>();
}
}
私たちのコンストラクターの内部では、私たちは、SQLiteConnectionクラスの新しいインスタンスを作成し、括弧内に、SQLiteデータベースのパスを渡します。(文字列とXamarin.Essentialsのようなファイル・システム・ヘルパーを組み合わせて使用します)。次に、私たちは、StockとValuationテーブルを作成しています。これは、ORM部分が登場します。私たちが、このアプリケーションを実行する場合、テーブルは、自動的に、SQLiteデータベースにマップされます。そして、私たちは、SQLクエリを使用して、それらにアクセスできます。テーブルが、SQLiteデータベースに存在しない場合、それらが生成されます。それらが存在する場合、テーブル内の既存のデータは、すべて、"Migrated"になり、(新しいフィールドが、追加された場合)テーブルは、更新されます。
現在、データベースが、正常にマッピングされたので、私たちは、データに対するクエリの実行を開始できます。Stockテーブルに新しい行を挿入することから始めましょう。
public void AddStock() {
var stock = new Stock{
Symbol = "MSFT"
};
_db.Insert( stock );
}
そして、そのように、私たちは、新しい行を、Stockテーブルを挿入しました。主キーは、自動的に生成されるため、私たちは、それを指定する必要はありません:私たちが、行う必要があるのは、新しいStockオブジェクトを作成し、_db.Insertに渡すことだけでした。
私たちが、データベースにクエリを実行すると、私たちは、新しい記録を見ることができます。
public void GetStocks()
{
var stocks = _db.Query<Stock>("SELECT * FROM Stocks");
foreach(var stock in stocks)
{
Console.WriteLine(stock.Symbol);
}
}
制限
Limits
外部キーをサポートしていません。
以上です。これで、あなたのすべての設定が完了しました。同期APIドキュメント(Synchronous API Docs)を使用して、基本的なコマンドについて学んで下さい。