\

c#からLiteDBのレコードを更新・削除する方法

LiteDBはポータブルなNoSQLデータベースです。

.Net Framework 用にライブラリが用意されており、c#などから簡単に使用することができます。

この記事では、c#を使用してLiteDBのレコードを更新する方法を紹介します。

0. Nugetパッケージの適用

LiteDBのNugetパッケージを適用します。

https://www.nuget.org/packages/LiteDB

1
dotnet add package LiteDB --version 5.0.9

1. サンプルのデータ構造

この記事では、以下のデータ項目をもったレコードを対象とします。

idをユニークキーとしています。

1
2
3
4
5
public class Data {
public int id {get; set;}
public int TaskGroupUID {get; set;}
public string TaskGroupName {get; set;}
}

2. テーブル名称

テーブル名称は、同一クラス内に定義しておきます。

1
public static string tableName = "TaskGroup";

3. 更新処理

以下のコードで更新することができます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void Update(int id, Data updateData)
{

using (LiteDatabase litedb = new LiteDatabase(DataModel.DataBase.litedbFilePath))
{
var col = litedb.GetCollection<Data>(tableName);
var record = col.FindOne(x => x.id == id);

record.TaskGroupUID = updateData.TaskGroupUID;
record.TaskGroupName = updateData.TaskGroupName;

col.Update(record);

}

}

この関数では、以下の引数を持ちます。

引数名称 属性 意味
id int ユニークキーです。更新対象のレコードを特定するのに使用します
updateData Dataクラス 更新情報を格納します

idで特定した1レコードを、updateDataの情報で更新する処理になります。

4. 削除処理

削除するには、以下のようになります。

1
2
3
4
5
6
7
8
9
10
public static void Delete(int id)
{
using (LiteDatabase litedb = new LiteDatabase(DataModel.DataBase.litedbFilePath))
{
var col = litedb.GetCollection<Data>(tableName);
var record = col.FindOne(x => x.id == id);

col.Delete(id);
}
}

これも更新処理と同様に、idで特定した1レコードをDeleteメソッドで削除する処理になります。

5. ソースコードの全体像

この記事で使用したクラスファイルの全体像を以下に記載します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System;
using LiteDB;
using System.Collections.Generic;

namespace consoleapp.DataModel
{
public class TaskGroup
{

// レコード定義
public class Data {
public int id {get; set;}
public int TaskGroupUID {get; set;}
public string TaskGroupName {get; set;}
}

// NoSQLテーブル名称
public static string tableName = "TaskGroup";

// レコード追加処理
public static void Add(Data data)
{

using (LiteDatabase litedb = new LiteDatabase(DataModel.DataBase.litedbFilePath))
{
var col = litedb.GetCollection<Data>(tableName);

Data taskGroupData = new Data();
taskGroupData.TaskGroupUID = data.TaskGroupUID;
taskGroupData.TaskGroupName = data.TaskGroupName;

col.Insert(taskGroupData);
}

}


//全件取得
public static List<Data> GetAllData()
{
using(LiteDatabase litedb = new LiteDatabase(DataModel.DataBase.litedbFilePath))
{
var col = litedb.GetCollection<TaskGroup.Data>(TaskGroup.tableName);
var result = col.Query()
.ToList();
return result;
}
}

// 1レコード取得
public static Data GetOneRecord(int id)
{
using (LiteDatabase litedb = new LiteDatabase(DataModel.DataBase.litedbFilePath))
{
var col = litedb.GetCollection<Data>(tableName);
var record = col.FindOne(x => x.id == id);

return record;
}
}

//1レコード更新
public static void Update(int id, Data updateData)
{

using (LiteDatabase litedb = new LiteDatabase(DataModel.DataBase.litedbFilePath))
{
var col = litedb.GetCollection<Data>(tableName);
var record = col.FindOne(x => x.id == id);

record.TaskGroupUID = updateData.TaskGroupUID;
record.TaskGroupName = updateData.TaskGroupName;

col.Update(record);

}

}

//1レコード削除
public static void Delete(int id)
{
using (LiteDatabase litedb = new LiteDatabase(DataModel.DataBase.litedbFilePath))
{
var col = litedb.GetCollection<Data>(tableName);
var record = col.FindOne(x => x.id == id);

col.Delete(id);
}
}

}
}

コメントシステムを導入しました!コメント頂けると嬉しすぎて、光の速さで返信します(●´ω`●)

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱