【WPF】PostgreSQL に接続してデータを取得して表示する

2017年8月8日C#,開発

おはようございます。

今回は、PostgreSQLを使ってデータを検索、データグリッドに表示してみます。
お決まりですが、プログラムは前回までのものを流用します。

また、PostgreSQLをインストールしていない場合は次の記事を参照して、パソコンにインストールしてください。

スポンサーリンク

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

NuGetパッケージ管理を開く
NuGetパッケージ管理を開く

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

NuGetパッケージ管理
NuGetパッケージ管理

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

プレビュー画面
プレビュー画面

プレビュー画面が表示される場合は「OK」ボタンをクリックします。

出力ビュー
出力ビュー

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

スキーマの作成

PostgreSQL ではスキーマ単位の管理をしておかないと困ることになります。

スキーマ指定しないでテーブル作成すると「public」スキーマに作成されるのですが、
C#からの接続時には必ず(やってみた限りでは)スキーマ指定しないといけないので、まずはスキーマを作成しておきます。

テーブルの作成

作成したスキーマににテーブルを作成
SQLite の時と同じテーブル、データを用意します。

このとき、テーブル名やカラム名は小文字にしておくこと。

設定ファイルの修正

次のようにします。
重要な部分は、「entityFramework」タグと「system.data」タグ。

App.config

プログラム修正

新規クラスの追加

DbContextを継承したクラスを作成します。
このクラスでデータベースへの接続、Entityへのマッピングなどを行います。
デフォルトのスキーマを変更する場合、「OnModelCreating」メソッドにて設定可能です。

PgDbContext.cs

Entityクラスの修正

アノテーションが今までのとちょっと違うので修正します。

Kind.cs

Cat.cs

宣言の追加

MainWindow.xaml.cs

接続処理の変更

テーブル作成以外、全ての箇所を変更します。

MainWindow.xaml.cs

テーブル作成は今まで通りコマンドで行います。
(また別途、DbContext でのやり方は紹介します)

テーブル作成クエリの変更

SQLite とは微妙に違うところ(型、長さ)を変更。

MainWindow.xaml.cs

検索処理の修正

MainWindow.xaml.cs

コンバーターの修正

データグリッドに表示する際に値を変換している箇所も、DB接続しているため変更します。

KindConverter.cs

 

起動してみる

検索結果
検索結果

無事に起動、検索することができました。

まとめ

ひとまず、元々の処理(SQLite、MySQL)とあまり変更せずに実装することができました。

ちょっと長くなってしまったので、
登録、更新、削除はまた次回とさせていただきます。

ではでは。

 

スポンサーリンク


関連するコンテンツ

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

Posted by doradora