ページの先頭行へ戻る
Symfoware Server V12.1.0 アプリケーション開発ガイド
FUJITSU Software

6.3 データベースへの接続

ポイント

  • 接続サービスファイルを用いて接続先を指定することを推奨します。接続サービスファイルには、接続先情報やコネクションに対して設定する各種のチューニング情報を1セットとして名前(サービス名)を定義します。データベース接続時には、接続サービスファイルに定義されたサービス名を用いることで、接続情報の変更によるアプリケーションの修正が不要になります。
    “PostgreSQL文書”の“クライアントインタフェース”の“接続サービスファイル”を参照してください。

  • 接続サービスファイルを利用するには、以下のいずれかの方法があります。

    • 文字列リテラルまたはホスト変数を使用して、以下のように記述する方法

      tcp:postgresql://?service=my_service

    • 環境変数PGSERVICEにサービス名を設定し、かつCONNECT TO DEFAULTを用いる方法

以下に示すCONNECT文を利用してデータベースサーバへの接続を作成します。

書式

EXEC SQL CONNECT TO target [AS connection-name] [USER user-name];
target

次のいずれかの形式で記述します。

  • dbname@host:port

  • tcp:postgresql://host:port/dbname[?options]

  • SolarisLinuxunix:postgresql://host[:port][/dbname][?options]
    (UNIXドメインソケットを使用する場合の記述方法)

  • 上記形式のいずれかを含むSQL規約の文字列定数

  • 上記形式のいずれかを含む文字変数への参照

  • DEFAULT

user-name

次のいずれかの形式で記述します。

  • username

  • username/password

  • username IDENTIFIED BY password

  • username USING password

引数に関する説明

引数

説明

dbname

データベース名を指定します。

host

接続先のホスト名を指定します。

port

データベースサーバのポート番号を指定します。

省略した場合は、26500となります。

connection-name

1つのプログラム内で複数の接続を処理する場合に、コネクションを識別するためのコネクション名を指定します。

username

データベースへ接続するユーザー名を指定します。

省略した場合は、そのアプリケーションを実行しているユーザーのオペレーティングシステム上の名前と同じです。

password

パスワードによる認証を必要とした場合に、パスワードを指定します。

options

タイムアウト時間を指定する場合は、以下のパラメータを指定します。複数のパラメータを指定する場合は&で繋ぎます。各パラメータの指定値は以下のとおりです。

  • connect_timeout

    接続時のタイムアウト時間を指定します。

    単位は秒で0~2147483647を指定します。0、不当な値を指定した場合、省略した場合は無制限です。1を指定した場合は2が指定されたものとして扱います。指定された時間内にコネクションが接続できなかった場合はエラーとなります。

  • keepalives

    キープアライブを有効にします。

    0を指定した場合はキープアライブが無効、それ以外の数値を指定した場合はキープアライブが有効となります。省略値はキープアライブが有効です。キープアライブにより、データベースとの接続が無効と判断された場合はエラーとなります。

  • keepalives_idle

    データベースとの通信が行われていない場合、キープアライブメッセージの送信を開始するまでの時間を指定します。

    • Linuxの場合

      単位は秒で1~32767を指定します。省略した場合はシステムのデフォルト値を使用します。

    • Windowsの場合

      単位は秒で1~2147483647を指定します。それ以外の値を指定した場合、および省略した場合は7200が指定されたものとして扱います。

    • Solarisの場合

      指定できません。

  • keepalives_interval

    キープアライブメッセージの応答がない場合に、何秒後に再送するかを指定します。

    • Linuxの場合

      単位は秒で1~32767を指定します。省略した場合はシステムのデフォルト値を使用します。

    • Windowsの場合

      単位は秒で1~2147483647を指定します。それ以外の値を指定した場合、および省略した場合は1が指定されたものとして扱います。

    • Solarisの場合

      指定できません。

  • keepalives_count

    キープアライブメッセージの再送回数を指定します。

    • Linuxの場合

      1~127の値を指定します。省略した場合はシステムのデフォルト値を使用します。

    • Windowsの場合

      本パラメータの指定に関係なく、システムのデフォルト値を使用します。

    • Solarisの場合

      指定できません。

参考

Solarisでは、keepalives_idle、keepalives_intervalおよびkeepalives_countを指定できませんが、nddコマンドで、以下を設定できます。

  • tcp_keepalive_interval

    キープアライブメッセージを送信するまでの時間

  • tcp_ip_abort_interval

    TCP接続に対する再送タイムアウト値

ただし、システム全体に影響があることを考慮して設定する必要があります。

アプリケーションの記述例

EXEC SQL CONNECT TO tcp:postgresql://sv1:26500/mydb?connect_timeout=20&keepalives=1&keepalives_idle=20&keepalives_interval=5&keepalives_count=2 USER myuser/myuser01;