LiteDB のデータベース、コレクション(テーブル)を作成する - C#

LiteDB のデータベース、コレクション(テーブル)を作成するコードを紹介します。

プログラム例

Windows Formアプリケーションを作成します。

UI

下図のフォームを作成します。ボタンが2つ配置されていますが、今回は[button1]のみを利用します。

コード

以下のコードを記述します。
MyRecord.cs
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を愛用
掲載日: 2022-11-21
iPentec all rights reserverd.