仕事ではVB.netでADO接続するためのモジュールが必要だったのだが、以前VBAで作ったADO接続ツールを転用して作ってみた。
まだ備忘録レベルであるが・・。

◆まず、ADOを簡単に理解する。
http://www.datadirect.co.jp/technote/ADOvsADODOTNET.asp
http://msdn.microsoft.com/ja-jp/library/cc426812.aspx

ADOは、OLE DB Provider を利用して接続する。一般に各ベンダーのものを使うが、OLE DB Provider for ODBC というものがあり、結局はODBCドライバを使うこともある。

ここでは PostgreSQL用の、OLE DB Provider for PostgreSQL(通常は PgOleDb というらしい)を用いる。

◆PgOleDbをダウンロードする。
http://pgfoundry.org/projects/oledb/

このページのダウンロードをクリックし、今回は PgOleDb-1.0.0.20.zip をダウンロードして展開した。

◆PgOleDbをインストールする。
展開した中に、README というファイルがあるのでテキストエディタで開く。思いっきり英語であるが、難しくはない。簡単に書くと
・PGOLEDB.DLL と LIBPQ.DLL をシステムフォルダにコピーする。私はC:\Windows に入れた。
・コマンドプロンプトで regsvr32 PGOLEDB.DLL を実行すると成功のメッセージが出る。うん、確かに成功が出た。

◆PgOleDbを使う。
先ほどの README にも接続文字はある。しかし、なんだかうまくつながらなかったので以下のサイトを参考にした。
http://homepage1.nifty.com/kojama/works/rdbms/conn/connstr.html

PostgreSQL:OLE DBプロバイダ」に記載されてる接続文字を使えば接続することができた。READMEでは接続できなかった原因を検証していないが、パラメータが小文字か大文字かということも影響するのではないかと思う。

◇ポート番号は?
PgOleDbを使う限りにおいてはポート番号を記載する必要がなかった。デフォルトの5432だからか?そこは未検証である。

◇Data Source に書けるものは?
LAN上の PostgreSQL サーバーのIPアドレス指定は当然のこと、インターネットサイトの PostgreSQL のURIを指定しても接続できた。ただ、ルーター等でポートが開いている必要はある。

簡単であるが。