.NetクライアントからPostgreSQLを操作してみる

ODBC接続でやってみました。OLEDBもあるらしいんですが、先に見つけたのがODBCドライバだったもので…。
T-SQLでやっていたのとほぼ同じ内容なので、あっという間にできるはずだったのですが、てこずりました。

まず、「なんか Syntax Error が出てるー」程度しか例外のメッセージに出てこなかったので、悩みました。
で、PostgreSQLのログにエラーの発生したステートメントを書く方法。
$(PGSQL)/data/poistgresql.conf内に次を追加します。

log_min_error_statement = debug5

これで、どんなステートメントが出ていたか分かります。
で、ADO.NETからPostgreSQLにINSERTを飛ばす際に、
INSERT INTO <テーブル名>; (...)
と、テーブル名の直後にセミコロンをつけていたのが原因でした。
理由が全く分からず、うがーうげーとうなってました。
結局、SELECTコマンドに

SELECT * FROM "<テーブル名>";

と、セミコロンをつけていたためでした。なんだよそれ。

次は悩んだというよりは大変と言った方がいいでしょう。テーブル構造のエディタの機能を持っているモノを作っていたので、ユーザが入力した通りに反映させたい。でも PostgreSQL は、ダブルクォートでくくらないと大文字を小文字にしてしまいます。そこらじゅうのフィールドを、ダブルクォートでくくりました。実の無い作業ほど疲れるものはない…。

でも、FreeBSD上で動いているPostgreSQLWindows上の.Netクライアントから操作できるのは、ちょっと感動した…。