支援版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1

CONNECT

CONNECT — 建立資料庫連線

概要

CONNECT TO connection_target [ AS connection_name ] [ USER connection_user ]
CONNECT TO DEFAULT
CONNECT connection_user
DATABASE connection_target

描述

CONNECT 命令建立客戶端和 PostgreSQL 伺服器之間的連線。

參數

connection_target #

connection_target 指定連線的目標伺服器,有多種形式。

[ database_name ] [ @host ] [ :port ] #

透過 TCP/IP 連線

unix:postgresql://host [ :port ] / [ database_name ] [ ?connection_option ] #

透過 Unix 網域 Socket 連線

tcp:postgresql://host [ :port ] / [ database_name ] [ ?connection_option ] #

透過 TCP/IP 連線

SQL 字串常數 #

包含以上形式之一的值

主機變數 #

類型為 char[]VARCHAR[] 的主機變數,包含以上形式之一的值

connection_name #

連線的可選識別符,以便在其他命令中引用。 這可以是 SQL 識別符或主機變數。

connection_user #

資料庫連線的使用者名稱。

此參數也可以指定使用者名稱和密碼,使用 user_name/passworduser_name IDENTIFIED BY passworduser_name USING password 等形式。

使用者名稱和密碼可以是 SQL 識別符、字串常數或主機變數。

DEFAULT #

使用 libpq 定義的所有預設連線參數。

範例

以下是指定連線參數的幾種變體

EXEC SQL CONNECT TO "connectdb" AS main;
EXEC SQL CONNECT TO "connectdb" AS second;
EXEC SQL CONNECT TO "unix:postgresql://200.46.204.71/connectdb" AS main USER connectuser;
EXEC SQL CONNECT TO "unix:postgresql://127.0.0.1/connectdb" AS main USER connectuser;
EXEC SQL CONNECT TO 'connectdb' AS main;
EXEC SQL CONNECT TO 'unix:postgresql://127.0.0.1/connectdb' AS main USER :user;
EXEC SQL CONNECT TO :db AS :id;
EXEC SQL CONNECT TO :db USER connectuser USING :pw;
EXEC SQL CONNECT TO @localhost AS main USER connectdb;
EXEC SQL CONNECT TO REGRESSDB1 as main;
EXEC SQL CONNECT TO AS main USER connectdb;
EXEC SQL CONNECT TO connectdb AS :id;
EXEC SQL CONNECT TO connectdb AS main USER connectuser/connectdb;
EXEC SQL CONNECT TO connectdb AS main;
EXEC SQL CONNECT TO connectdb@localhost AS main;
EXEC SQL CONNECT TO tcp:postgresql://127.0.0.1/ USER connectdb;
EXEC SQL CONNECT TO tcp:postgresql://127.0.0.1/connectdb USER connectuser IDENTIFIED BY connectpw;
EXEC SQL CONNECT TO tcp:postgresql://127.0.0.1:20/connectdb USER connectuser IDENTIFIED BY connectpw;
EXEC SQL CONNECT TO unix:postgresql://127.0.0.1/ AS main USER connectdb;
EXEC SQL CONNECT TO unix:postgresql://127.0.0.1/connectdb AS main USER connectuser;
EXEC SQL CONNECT TO unix:postgresql://127.0.0.1/connectdb USER connectuser IDENTIFIED BY "connectpw";
EXEC SQL CONNECT TO unix:postgresql://127.0.0.1/connectdb USER connectuser USING "connectpw";
EXEC SQL CONNECT TO unix:postgresql://127.0.0.1/connectdb?connect_timeout=14 USER connectuser;

這是一個範例程式,說明如何使用主機變數來指定連線參數

int
main(void)
{
EXEC SQL BEGIN DECLARE SECTION;
    char *dbname     = "testdb";    /* database name */
    char *user       = "testuser";  /* connection user name */
    char *connection = "tcp:postgresql://127.0.0.1:5432/testdb";
                                    /* connection string */
    char ver[256];                  /* buffer to store the version string */
EXEC SQL END DECLARE SECTION;

    ECPGdebug(1, stderr);

    EXEC SQL CONNECT TO :dbname USER :user;
    EXEC SQL SELECT pg_catalog.set_config('search_path', '', false); EXEC SQL COMMIT;
    EXEC SQL SELECT version() INTO :ver;
    EXEC SQL DISCONNECT;

    printf("version: %s\n", ver);

    EXEC SQL CONNECT TO :connection USER :user;
    EXEC SQL SELECT pg_catalog.set_config('search_path', '', false); EXEC SQL COMMIT;
    EXEC SQL SELECT version() INTO :ver;
    EXEC SQL DISCONNECT;

    printf("version: %s\n", ver);

    return 0;
}

相容性

CONNECT 在 SQL 標準中指定,但連線參數的格式是與實作相關的。

提交更正

如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步澄清的地方,請使用此表單報告文件問題。