スポンサーリンク
スポンサーリンク

.NET 8.0 + Windowsフォームアプリ + Dapper + SQLite で実装するCRUD処理

.NET CoreC#DapperSQLiteVisual StudioWindowsフォームアプリオープンソースデータベース

.NET 8.0 の Windowsフォームアプリで、Dapper + SQLite NuGetパッケージを使い、SQLiteデータベースに CRUD処理するサンプルを作成しました。ORマッピングの主流は Dapper。
ソースコードは GitHub で公開しています。

 

データベース

SQLiteの管理ツールは DB Browser for SQLite を使用。
使用したバージョンは 2024/10/29時点で最新の v3.13.1。
https://sqlitebrowser.org/blog/version-3-13-1-released/

 

DB Browser for SQLite で SQLiteのデータベースファイルを作成。

 

テーブル定義。

 

※SQliteのデータベースファイルをパスワードで暗号化する機能は System.Data.SQLiteが 1.0.114 以降のバージョンでは使えないらしい。

c# – ファイルまたはアセンブリ ‘System.Data.SQLite.SEE.License、バージョン =1.0.117.0 – スタック オーバーフローを読み込めませんでした

SQLiteのパスワード有りデータベースファイルへ接続するテストツール

 

ソースコード構成

今回使った Visual Studio プロジェクト テンプレートは、Visual Studio 2022 + .NET 8 + Windowsフォームアプリ。

 

NuGet パッケージ インストール

System.Data.SQLiteパッケージをインストール

使用したバージョンは 2024/10/29時点で最新の v1.0.119。

 

Dapperパッケージをインストール

使用したバージョンは 2024/10/29時点で最新の v2.1.35。

 

ソースコード変更内容を解説

 

/DB/EWise.db

DB Browser for SQLiteで作成した SQLiteのデータベースファイル。

 

/WinFormsApp1/WinFormsApp1/Const/StaticData.cs

SQLiteのデータベースファイルに接続するコネクションストリングを追加。

 

/WinFormsApp1/WinFormsApp1/Form1.cs

アプリ起動時に表示されるメイン画面。
Form1_Load()イベントハンドラで SQLiteデータベースのデータを DataGridViewに表示。
btn追加_Click()イベントハンドラで編集画面を表示。
dataGridView1_CellContentClick()イベントハンドラで対象行の「編集」「削除」ボタンを処理。
Get政権()メソッドで SQLiteデータを DataGridViewに表示する処理を共通化。

 

/WinFormsApp1/WinFormsApp1/Form1.Designer.cs /WinFormsApp1/WinFormsApp1/Form1.resx

初期表示画面のレイアウトはこんな感じ。
アプリ起動時に表示されるメイン画面。

 

/WinFormsApp1/WinFormsApp1/FormEdit.cs

初期表示画面で「追加」「編集」ボタンをクリックした際に表示するデータ編集画面。
FormEdit()コンストラクタで 初期表示画面のDataGridViewの行データを受け取る。
FormEdit_Load()イベントハンドラで DataGridViewの行データを各テキストボックスに展開。
btn登録_Click()イベントハンドラで 入力された値を SQLiteデータベースへ反映。
btnキャンセル_Click()イベントハンドラは データ編集画面を閉じるだけ。
「return sqliteConnection.Query<M政権>(query).AsList();」で SQLiteデータベースから取得した M政権モデルクラスのデータを DataGridViewへ展開し、
「var selected = (M政権)senderGrid.Rows[e.RowIndex].DataBoundItem;」で DataGridViewのデータを M政権モデルクラスへ戻す流れがとてもシンプルになっている。

 

/WinFormsApp1/WinFormsApp1/FormEdit.Designer.cs/WinFormsApp1/WinFormsApp1/FormEdit.resx

データ編集画面のレイアウトはこんな感じ。

 

/WinFormsApp1/WinFormsApp1/Model/M政権.cs

SQLiteデータベースの 政権テーブルに対応する M政権モデルクラスを追加。

 

/WinFormsApp1/WinFormsApp1/Sql/Sql政権.cs

SQLiteデータベースの 政権テーブルに対する CRUD処理を追加。
Dapperを使っていることで、SQLとデータの紐づけ、Selectしたデータを M政権モデルクラスへ変換する処理、M政権モデルクラスを Insert/Updateする処理がとてもシンプルになっている。
データベース処理に SQLを使わない開発者は無能。

 

/WinFormsApp1/WinFormsApp1/WinFormsApp1.csproj

インストールした NuGetパッケージや、追加したコンポーネントが、追加されている。

 

コメント

タイトルとURLをコピーしました