C#でSQLiteを使うときに必ず必要になるのが、CRUD(Create / Read / Update / Delete)。 この記事では、最も安定して使える Microsoft.Data.Sqlite を使って、 最小コードで動く実務向けのCRUD をまとめています。
この記事でわかること
・SQLite × C# の基本構造
・INSERT / UPDATE / DELETE / SELECT の最小コード
・パラメータの安全な使い方
・DataTableでの読み込み方法
・業務アプリで使うベストプラクティス
・SQLite × C# の基本構造
・INSERT / UPDATE / DELETE / SELECT の最小コード
・パラメータの安全な使い方
・DataTableでの読み込み方法
・業務アプリで使うベストプラクティス
1. 必要なNuGetパッケージ
- Microsoft.Data.Sqlite
- SQLitePCLRaw.bundle_e_sqlite3
この2つだけでOK。 .NET 10 でも最も安定して動く組み合わせです。
2. 接続の基本コード
using Microsoft.Data.Sqlite;
var connectionString = "Data Source=sample.db";
using var connection = new SqliteConnection(connectionString);
connection.Open();
3. INSERT(データ追加)
var sql = "INSERT INTO Users (Name, Age) VALUES (@name, @age)";
using var command = new SqliteCommand(sql, connection);
command.Parameters.AddWithValue("@name", "Taro");
command.Parameters.AddWithValue("@age", 25);
command.ExecuteNonQuery();
ポイント
- 必ずパラメータを使う(SQLインジェクション対策)
- ExecuteNonQuery() を使う
4. SELECT(データ取得)
var sql = "SELECT Id, Name, Age FROM Users";
using var command = new SqliteCommand(sql, connection);
using var reader = command.ExecuteReader();
while (reader.Read())
{
var id = reader.GetInt32(0);
var name = reader.GetString(1);
var age = reader.IsDBNull(2) ? (int?)null : reader.GetInt32(2);
Console.WriteLine($"{id}, {name}, {age}");
}
ポイント
- reader.Read() で1行ずつ読む
- NULLは IsDBNull() でチェック
5. UPDATE(データ更新)
var sql = "UPDATE Users SET Age = @age WHERE Id = @id";
using var command = new SqliteCommand(sql, connection);
command.Parameters.AddWithValue("@age", 30);
command.Parameters.AddWithValue("@id", 1);
command.ExecuteNonQuery();
ポイント
- WHERE を忘れると全件更新になるので注意
6. DELETE(データ削除)
var sql = "DELETE FROM Users WHERE Id = @id";
using var command = new SqliteCommand(sql, connection);
command.Parameters.AddWithValue("@id", 1);
command.ExecuteNonQuery();
ポイント
- DELETE も WHERE が必須
7. DataTableで読み込みたい場合(WinForms/WPF向け)
var dt = new DataTable();
using var command = new SqliteCommand("SELECT * FROM Users", connection);
using var reader = command.ExecuteReader();
dt.Load(reader);
// DataGridView.DataSource = dt; などに使える
8. CRUDまとめ(最小コード一覧)
// INSERT
INSERT INTO Users (Name, Age) VALUES (@name, @age);
// SELECT
SELECT Id, Name, Age FROM Users;
// UPDATE
UPDATE Users SET Age = @age WHERE Id = @id;
// DELETE
DELETE FROM Users WHERE Id = @id;
9. 業務アプリでのベストプラクティス
- 接続は using で確実に閉じる
- SQLは必ずパラメータ化する
- DBファイルは Program Files に置かない(権限問題)
- バックアップはファイルコピーでOK(SQLiteの強み)
- 大量データはインデックス必須
まとめ:C# × SQLite のCRUDはシンプルで強力
- INSERT / UPDATE / DELETE / SELECT は数行で書ける
- Microsoft.Data.Sqlite が最も安定
- 業務アプリとの相性が抜群
- DataTableにも簡単に変換できる
C#で軽量DBを使うなら、SQLiteは最も扱いやすく、 小規模〜中規模アプリの最適解です。 この記事をベースに、あなたのアプリに組み込んでみてください。