ZeosDBO で PostgreSQL に接続する
コードで書くとこんな感じです。
uses ..., ZConnection, ZDataset, ZCompatibility;
procedure TForm1.Button1Click(Sender: TObject); var DBC: TZConnection; QRY: TZQuery; begin DBC := TZConnection.Create(Self); QRY := TZQuery.Create(Self); try // TZConnection DBC.Protocol := 'postgresql'; DBC.HostName := 'localhost'; DBC.Port := 5432; DBC.Database := 'test'; DBC.User := 'postgres'; DBC.Password := 'postgres'; DBC.ControlsCodePage := cCP_UTF16; DBC.UTF8StringsAsWideField := True; with DBC.Properties do begin Values['application_name'] := Application.Title; end; // TZQuery QRY.Connection := DBC;
DBC.Connect; if DBC.Connected then begin QRY.SQL.Text := 'SELECT * FROM public.tbl_detail'; QRY.Open; while not QRY.Eof do begin // ... QRY.Next; end; QRY.Close; DBC.Disconnect; end; finally QRY.Free; DBC.Free; end; end;
Zeos.inc 中で POSTGRESQL_STRICT_DLL_LOADING が指定されていると、以下の名前の DLL を読みに行きます (Protocol: DLL 名)。
- postgresql: libpq.dll
- postgresql-7: libpq74.dll
- postgresql-8: libpq81.dll
- postgresql-9:libpq.dll
指定されていなければ、Protocol が (PostgreSQL の) 何であっても libpq.dll を読みに行きます。
※ デフォルトでは POSTGRESQL_STRICT_DLL_LOADING はオフです (ピリオドでコメントアウトされています)。
Properties に渡せるパラメータは以下の通りです。
- beginreq=[yes,no]: トランザクション開始に BEGIN が必要か?
- oidasblob=[yes,no]: OID 型は BLOB か、それとも Integer か?
- timeout=<秒>: コネクションタイムアウトまでの時間 (秒)
- codepage=<クライアントコードページ>
- sslmode=[disable, allow, prefer, require]: disable=非 SSL 接続のみ試行。allow=最初に非 SSL 接続を試行。失敗の場合、SSL 接続を試行。prefer=最初に SSL 接続を試行。失敗の場合、非 SSL 接続を試行。require=SSL 接続のみ試行。
- requiressl=[0, 1]: 非推奨のパラメータ。sslmode を使ってください。
- application_name=<アプリケーション名>: 指定しておくとログ等にこの名前が残る
詳しくは /doc/html フォルダ内の parameters.html を参照してください。但しこのドキュメントは古い (2008/05 時点) ので、正確な仕様についてはソースコードを確認する事をオススメします。
|