C#でSQLiteを使うとき、DataTableに読み込んで一覧表示したいというケースは非常に多いです。 特に WinForms / WPF の業務アプリでは、DataGridView や DataGrid にバインドするために DataTable が定番です。
この記事でわかること
・SQLite → DataTable の最速コード
・DataGridView / WPF へのバインド方法
・CRUDと組み合わせる実務パターン
・業務アプリでのベストプラクティス
・SQLite → DataTable の最速コード
・DataGridView / WPF へのバインド方法
・CRUDと組み合わせる実務パターン
・業務アプリでのベストプラクティス
1. 必要なNuGetパッケージ
- Microsoft.Data.Sqlite
- SQLitePCLRaw.bundle_e_sqlite3
この2つだけでOK。 .NET 10 でも最も安定して動く組み合わせです。
2. SQLite → DataTable の最小コード
まずは「最速で動く」基本コードから。
using Microsoft.Data.Sqlite;
using System.Data;
var dt = new DataTable();
var connectionString = "Data Source=sample.db";
using var connection = new SqliteConnection(connectionString);
connection.Open();
using var command = new SqliteCommand("SELECT * FROM Users", connection);
using var reader = command.ExecuteReader();
dt.Load(reader);
// DataGridView.DataSource = dt; などに使える
ポイント
- DataTable.Load(reader) で一発読み込み
- WinForms / WPF どちらでも使える
- 大量データでも高速
3. DataGridView に表示する(WinForms)
dataGridView1.DataSource = dt;
これだけで一覧表示が完成します。
4. WPF(DataGrid)に表示する
dataGrid.ItemsSource = dt.DefaultView;
WPFは DataTable をそのまま渡せないので、DefaultView を使います。
5. WHERE句付きの検索(実務で必須)
var dt = new DataTable();
var sql = "SELECT * FROM Users WHERE Age > @age";
using var command = new SqliteCommand(sql, connection);
command.Parameters.AddWithValue("@age", 20);
using var reader = command.ExecuteReader();
dt.Load(reader);
ポイント
- 必ずパラメータを使う(SQLインジェクション対策)
- DataTableは検索結果の一覧表示に最適
6. INSERT / UPDATE / DELETE と組み合わせる(CRUD)
■ INSERT
var sql = "INSERT INTO Users (Name, Age) VALUES (@name, @age)";
using var cmd = new SqliteCommand(sql, connection);
cmd.Parameters.AddWithValue("@name", "Taro");
cmd.Parameters.AddWithValue("@age", 25);
cmd.ExecuteNonQuery();
■ UPDATE
var sql = "UPDATE Users SET Age = @age WHERE Id = @id";
using var cmd = new SqliteCommand(sql, connection);
cmd.Parameters.AddWithValue("@age", 30);
cmd.Parameters.AddWithValue("@id", 1);
cmd.ExecuteNonQuery();
■ DELETE
var sql = "DELETE FROM Users WHERE Id = @id";
using var cmd = new SqliteCommand(sql, connection);
cmd.Parameters.AddWithValue("@id", 1);
cmd.ExecuteNonQuery();
■ SELECT → DataTable
var dt = new DataTable();
using var cmd = new SqliteCommand("SELECT * FROM Users", connection);
using var reader = cmd.ExecuteReader();
dt.Load(reader);
7. 業務アプリでのベストプラクティス
- DataTableは一覧表示に最適(DataGridView / WPF)
- 検索条件は必ずパラメータ化する
- 大量データは LIMIT / OFFSET を使う
- DBファイルは Program Files に置かない(権限問題)
- バックアップはファイルコピーでOK(SQLiteの強み)
まとめ:C# × SQLite × DataTable は業務アプリ最強の組み合わせ
- DataTable.Load(reader) で高速に一覧表示
- WinForms / WPF どちらでも使える
- CRUDと組み合わせると実務アプリがすぐ作れる
- SQLiteは軽量で壊れにくく、現場で扱いやすい
C#で業務アプリを作るなら、 SQLite × DataTable は最も実用的でコスパの良い組み合わせです。 この記事をベースに、あなたのアプリに組み込んでみてください。