【データベースへのアクセス】ADO.NETからPostgreSQLに接続する方法

Visual Studioを利用して開発をする場合、多くの現場で採用されているデータベースは、マイクロソフト社の製品であるSQL Serverではないでしょうか。しかし当然ですが、SQL Server以外のデータベースを使用して開発することも多々あります。ここでは、オープンソースのデータベースの代表格であるPostgreSQLの接続方法を紹介します。
- システム
エンジニア - PostgreSQLを接続する時は、SQL Serverと同じようなやり方で大丈夫でしょうか?
- プロジェクト
リーダー - そんなにやることに差はないですよ。ただPostgreSQLは、オープンソースのライブラリを使用して接続することが多いので、まずはそのライブラリを使用できる状態にする必要がありますけどね。
ADO.NETからPostgreSQLに接続するにはNpgsqlがおすすめ
C#の開発現場でPostgreSQLを利用する際に多くの現場で利用されているのが、オープンソースライブラリであるNpgsqlです。
まず、以下のサイトからダウンロード、インストールしましょう。
(公式サイト)https://www.nuget.org/packages/Npgsql/
Npgsqlを使用可能な状態にするために最低限必要なDLLは「Npgsql.dll」と「Mono.Security.dll」の2つです。この2つのDLLを実行するEXEファイルと同じ階層に置きましょう。その後、Visual Studioから上記のDLLを参照に追加すると、Npgsqlを使用できます。
また、オープンソースのライブラリである以上、時には自分でソースをデバッグし、修正することが必要になるかもしれません。NpgsqlはC#で作成されているので、その点を考慮しても、開発者にとって使い勝手が良いライブラリになるはずです。
ADO.NETからPostgreSQLに接続する事例
以下のサンプルプログラムは、PostgreSQLを使用して、簡単な登録と検索を実施する例になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using System; using Npgsql; using System.Data; using System.Text; using System.Windows.Forms; namespace WindowsFormsApp15 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { StringBuilder Setuzoku = new StringBuilder(); Setuzoku.Append("Server=127.0.0.1;"); //接続先のIPアドレスを設定します。 Setuzoku.Append("Port=5432;"); //接続先のポート番号を設定します。 Setuzoku.Append("User Id=USER01;"); //DBに接続するためのユーザーIDを設定します。 Setuzoku.Append("Password=USER01;"); //DBに接続するためのパスワードを設定します。 Setuzoku.Append("Database=TEST_DB;"); //接続するデータベース名を設定します。 string connString = Setuzoku.ToString(); using (var con = new NpgsqlConnection(connString)) { con.Open(); //DBに接続します。 //データをテーブル「m_address」へ登録します。 var cmd = new NpgsqlCommand(@"insert into m_address(id, name, address) values (:id, :name, :address)", con); cmd.Parameters.Add(new NpgsqlParameter("id", DbType.String) { Value = "00002" }); cmd.Parameters.Add(new NpgsqlParameter("name", DbType.String) { Value = "関東一郎" }); cmd.Parameters.Add(new NpgsqlParameter("address", DbType.String) { Value = "東京都港区" }); cmd.ExecuteNonQuery(); //登録処理実施 //テーブル「m_address」からデータを全件取得します。 cmd = new NpgsqlCommand(@"SELECT * FROM m_address", con); var dataReader = cmd.ExecuteReader(); //取得処理実施 while (dataReader.Read()) { //取得結果を出力します。 Console.WriteLine("{0},{1},{2}", dataReader["id"], dataReader["name"], dataReader["address"]); } } } } } |
出力ログ参照
PostgreSQLのm_addressテーブル内容
- プログラマー
- Npgsql以外にも、PostgreSQL用のライブラリってあるのでしょうか?
- プロジェクト
リーダー - dotConnect for PostgreSQLというライブラリがあります。こちらは有償ですが、サポートも充実しているし、接続も簡単にできますよ。現場によると思いますが、こちらも選択肢の1つとして覚えておいていいと思います。
ユーザーにとってベストなデータベースを導入しましょう
C#で開発する場合は言語との親和性や生産性を考慮して、SQL Serverを導入することが多くなります。しかし本来、データベースは開発者の生産性向上を理由に選択するものではなく、大事な資産として活用するユーザーのために選択されるべき代物です。PostgreSQLがユーザーにとってベストなデータベースになりえることもあります。
この機会に「C# = SQL Server」という方程式の見直しをしてみてはいかがでしょうか。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


PostgreSQL新着案件New Job
医療系アプリ開発/東京都八王子市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給41万~46万円東京都八王子市(西八王子市駅)医療系アプリ開発/東京都八王子市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給29万~30万円東京都八王子市(西八王子市駅)在庫管理システムスクラッチ開発/東京都豊島区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給41万~50万円東京都豊島区(要町駅)在庫管理システムスクラッチ開発/東京都豊島区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給29万~34万円東京都豊島区(要町駅)販売管理システム開発支援SE/PHP/東京都渋谷区/【WEB面談可】/テレワーク
月給45万~60万円東京都渋谷区(新宿駅)業績管理システムにおける開発/東京都千代田区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/テレワーク
月給29万~34万円東京都千代田区(大手町駅)