データベースサーバへの接続

PostgreSQL 8.0.0 文書
前のページ | 巻戻し | 第 29章ECPG - C言語による埋め込みSQL | 早送り | 次のページ

# 29.2. データベースサーバへの接続

以下の文を使用して、データベースへ接続します。

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

`target`は以下の方法で指定されます。

- ``dbname`[@`hostname`][:`port`]`

- `tcp:postgresql://`hostname`[:`port`][/`dbname`][?`options`]`

- `unix:postgresql://`hostname`[:`port`][/`dbname`][?`options`]`

- 上の形式のいずれかを含むSQL文字列リテラル。

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

- `DEFAULT`

接続目標をリテラル(つまり、変数を参照しない形)で指定し、その値を引用符で括らなかった場合、 大文字小文字の区別に関して通常のSQLの規則が適用されます。 また、この場合、必要に応じて個々のパラメータを二重引用符で別々に括ることもできます。 実際には、おそらく(単一引用符で括られた)文字列リテラルもしくは変数の参照を使用した方がエラーをより防止することができます。 `DEFAULT`接続目標は、デフォルトデータベース、デフォルトのユーザ名で接続を初期化します。 この場合は、ユーザ名と接続名を分けて指定することができません。

ユーザ名を指定するには、別の方法もあります。

- ``username``

- ``username`/`password``

- ``username` IDENTIFIED BY `password``

- ``username` USING `password``

これまで同様、`username`と`password`は、SQL識別子、SQL文字列リテラル、文字型変数への参照を取ることができます。

1つのプログラム内で複数の接続を処理する場合には、`connection-name`を使用します。 プログラムで1つしか接続を使わない場合は、省略して構いません。 最も最近に開かれた接続が現在の接続になり、SQL文を実行しようとする時にデフォルトでこの接続が使用されます。(本章の後で説明します。)

以下に`CONNECT`文について、数例を示します。

    EXEC SQL CONNECT TO mydb@sql.mydomain.com;

    EXEC SQL CONNECT TO 'unix:postgresql://sql.mydomain.com/mydb' AS myconnection USER john;

    EXEC SQL BEGIN DECLARE SECTION;
    const char *target = "mydb@sql.mydomain.com";
    const char *user = "john";
    EXEC SQL END DECLARE SECTION;
     ...
    EXEC SQL CONNECT TO :target USER :user;

最後の形式では、文字変数参照として上を参照する変数を使用しています。 後の節で、接頭子にコロンを持つ場合のSQL文内でのC変数の使用方法について説明します。

接続目標の書式は標準SQLでは規定されていないことに注意してください。 そのため、移植可能なアプリケーションを開発したいのであれば、上の例の最後の方法を基にして、接続目標文字列をどこかにカプセル化してください。

前のページ | ホーム | 次のページ
ECPG - C言語による埋め込みSQL | 上に戻る | 接続を閉じる