LiteDB のデータベース、コレクション(テーブル)を作成する - C#
LiteDB のデータベース、コレクション(テーブル)を作成するコードを紹介します。
プログラム例
Windows Formアプリケーションを作成します。
UI
下図のフォームを作成します。ボタンが2つ配置されていますが、今回は[button1]のみを利用します。
コード
以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CreateDB
{
internal class MyRecord
{
public int id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public int Price { get; set; }
}
}
using LiteDB;
namespace CreateDB
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
LiteDatabase ldb = new LiteDatabase("MyDB.db");
ILiteCollection<MyRecord> cl = ldb.GetCollection<MyRecord>("my_table");
MyRecord mr = new MyRecord();
mr.id = 1;
mr.Name = "ぺんぎんクッキー";
mr.Code = "PD-001";
mr.Price = 240;
cl.Insert(mr);
mr = new MyRecord();
mr.id = 2;
mr.Name = "らくだキャラメル";
mr.Code = "PD-002";
mr.Price = 80;
cl.Insert(mr);
mr = new MyRecord();
mr.id = 3;
mr.Name = "しろくまアイス";
mr.Code = "PD-003";
mr.Price = 360;
cl.Insert(mr);
mr = new MyRecord();
mr.id = 4;
mr.Name = "かるがもサブレ";
mr.Code = "PD-004";
mr.Price = 160;
cl.Insert(mr);
ldb.Dispose();
textBox1.Text += "レコードを挿入しました。\r\n";
}
}
}
解説
MyRecord.csでレコードのクラスを定義します。
4つのカラムを持つレコードを定義しています。
internal class MyRecord
{
public int id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public int Price { get; set; }
}
LiteDatabaseオブジェクトを作成します。コンストラクタの引数にデータベースのファイル名を指定します。
ファイルが存在しない場合は、新しいデータベースファイルが作成されます。
LiteDatabase ldb = new LiteDatabase("MyDB.db");
LiteDatabase オブジェクトのGetCollectionメソッドを呼び出します。GetCollectionメソッドの第一引数に、コレクション名(テーブル名)を与えます。
ILiteCollection<MyRecord> cl = ldb.GetCollection<MyRecord>("my_table");
レコードのオブジェクトを作成しテーブルに挿入する値を代入します。
値の代入後、コレクションオブジェクトのInsertメソッドを呼び出し、データを挿入します。
同様の処理を繰り返し、複数のレコードの値をデータベースに投入します。
MyRecord mr = new MyRecord();
mr.id = 1;
mr.Name = "ぺんぎんクッキー";
mr.Code = "PD-001";
mr.Price = 240;
cl.Insert(mr);
ldb.Dispose();
textBox1.Text += "レコードを挿入しました。\r\n";
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。データベースにレコードが挿入されます。テキストボックスに「レコードを挿入しました。」のメッセージが表示されます。
実行ファイルが配置されたディレクトリを確認します。"MyDB.db"ファイルが作成されていることが確認できます。
LiteDBのデータベースを作成し、レコードを挿入できました。
補足:もう一度ボタンをクリックした場合の動作
データベースに値を挿入後、もう一度ボタンをクリックすると、下記の例外が発生します。idに重複する値 "1"を挿入しようとしたため、例外が発生しています。
idは重複が許されない動作となっています。
エラーメッセージ
LiteDB.LiteException
HResult=0x80131500
Message=Cannot insert duplicate key in unique index '_id'. The duplicate value is '1'.
Source=LiteDB
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用