【WPF】SQLite から Linq でデータを取得してDataGrid に表示してみる

2017年6月9日C#,開発

おはようございます。

今日も引き続き WPF@C#の話しです。

その他リソースの外部ファイル化をやろうかと思ったのですが、
DataGridにちゃんとデータベースからデータを表示したかったのでちょっと寄り道。

とりあえずサンプルなんかで無料のデータベースを使うのあれば SQLite で十分なので、
SQLiteを使ってデータの検索、DataGridへの表示をやってみようと思います。

プログラムは前回のものを修正します。

まずは SQLite に接続するための準備から。

スポンサーリンク

Nuget でパッケージをダウンロード

プロジェクトのコンテキストメニュー
プロジェクトのコンテキストメニュー

ソリューションエクスプローラーからプロジェクトを選択、右クリックし
「Nuget パッケージの管理」を選択します。

Nuget パッケージ管理画面
Nuget パッケージ管理画面

Nuget パッケージ管理画面が表示されるので、
検索窓に「SQLite」を入力し、「System.Data.SQLite」を選択、
インストールボタンをクリックします。

変更確認画面
変更確認画面

変更の確認ダイアログが表示されるので、
「OK」ボタンをクリックします。

出力ビュー
出力ビュー

出力ビューに「終了」が出力されればOKです。

参照の確認
参照の確認

ソリューションエクスプローラーの「参照」を開き
System.Data.* が追加されていることが確認できれば追加完了です。

ビルド

一度ビルドを実行します。
上部メニューの「ビルド」>「ソリューションのリビルド」を選択します。

エクスプローラ
エクスプローラ

プロジェクトのディレクトリ>bin>Target>x86 、x64 に「SQLite.Interop.dll」が
出力されていることを確認します。

起動時にテーブルを作成する

プログラム修正

アプリケーション起動時に、テーブルを作成するようにプログラムを修正します。

MainWindows.xaml.cs

 

アプリケーションの実行

上部メニューの開始ボタンをクリックし、アプリケーションを実行すると
「MSTKIND」、「TBLCAT」テーブルが作成されます。

SQLite Manager
SQLite Manager

SQLite のデータベースを操作できるツール等で、テーブルが作成されていることを確認します。

今回は Firefox のアドオン「SQLite Manager」で確認しました。

データの追加

次のデータをツール、もしくはコマンドラインから追加します。

今度はコマンドラインから追加してみました。

SQLite Manager
SQLite Manager

更に SQLite Manager にて確認。

Linq で データを取得、設定する

Linqとは

オブジェクトやデータベース、データセット、エンティティ、XML文書など、アプリケーションで扱うさまざまなデータソースに対して、統一的な手段でアクセスするしくみ

Linq用パッケージの追加

Linqを利用するため、ライブラリの追加を行います。

ソリューションエクスプローラに表示されている「参照」を右クリックし
参照の追加画面を開きます。

参照の追加
参照の追加

「System.Data.Linq」を検索し、表示されたものを選択、「OK」ボタンをクリックします。

プログラム修正

クラス追加

種別クラス

Kind.cs

猫データクラス

Cat.cs

 

宣言の追加

MainWindow.xaml.cs

Linqを利用するためにパッケージ利用宣言を追加
(System.Data.Linq.Mapping)

データ取得処理の追加

「MainWindow」メソッドに次の記述を追加

MainWindow.xaml.cs

新規メソッドの追加(クリックイベント)

ビューの修正

検索ボタンにクリックイベントを追加します。

MainWindows.xaml

起動

修正後画面
修正後画面

全件検索

全件検索
全件検索

全データが表示されました。

名前指定検索

名前指定検索
名前指定検索

名前を指定したので、そらのみ表示されました。

種別指定検索

種別指定検索
種別指定検索

みけっぽい、「うみ」のみ表示されました。

存在しない組み合わせで検索

存在しない組み合わせ
存在しない組み合わせ

こうめはサビなので、なにも表示されません。

まとめ

ひとまず、DataGrid に表示できました。
サンプルなのでソースはまあまあ適当ですが、なんとなく使い方がわかってきました。
(実は Linq も初)

日々新しい技術が出てくるのでついていくのが大変ですね。
頑張ります。

次回(未定)は Log4net を使ってみたいと思います。

ではでは。

ソースはこちら

GitHub

スポンサーリンク


関連するコンテンツ

2017年6月9日C#,開発C#,SQLite,WPF,プログラミング

Posted by doradora