CONNECT

Name

CONNECT -- 建立数据库连接

Synopsis

CONNECT TO _connection_target_ [ AS _connection_name_ ] [ USER _connection_user_name_ ]
CONNECT TO DEFAULT
CONNECT _connection_user_name_
DATABASE _connection_target_

描述

CONNECT命令在客户端和PostgreSQL服务器之间 创建了连接。

参数

_connection_target_

_connection_target_ 在几种形式之一上指定了连接的目标服务器。

[ _database_name_ ] [ @``_host_ ] [ :``_port_ ]

TCP/IP连接

unix:postgresql://``_host_ [ :``_port_ ] / [ _database_name_ ] [ ?``_connection_option_ ]

连接Unix-域套接字

tcp:postgresql://``_host_ [ :``_port_ ] / [ _database_name_ ] [ ?``_connection_option_ ]

TCP/IP连接

SQL字符串常量

在上述形式之一中包含一个值

宿主变量

类型char[] 或者VARCHAR[]的宿主变量包含上述形式之一的值。

_connection_object_

用于连接可选标识符,这样就可以指向其他命令。 这可以是一个SQL标识符或者宿主变量。

_connection_user_

用于数据库连接的用户名。

该参数可以指定用户名和密码,使用下面形式之一 _user_name_/_password_, _user_name_ IDENTIFIED BY _password_或者 _user_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://localhost/connectdb" AS main USER connectuser;
EXEC SQL CONNECT TO 'connectdb' AS main;
EXEC SQL CONNECT TO 'unix:postgresql://localhost/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://localhost/ USER connectdb;
EXEC SQL CONNECT TO tcp:postgresql://localhost/connectdb USER connectuser IDENTIFIED BY connectpw;
EXEC SQL CONNECT TO tcp:postgresql://localhost:20/connectdb USER connectuser IDENTIFIED BY connectpw;
EXEC SQL CONNECT TO unix:postgresql://localhost/ AS main USER connectdb;
EXEC SQL CONNECT TO unix:postgresql://localhost/connectdb AS main USER connectuser;
EXEC SQL CONNECT TO unix:postgresql://localhost/connectdb USER connectuser IDENTIFIED BY "connectpw";
EXEC SQL CONNECT TO unix:postgresql://localhost/connectdb USER connectuser USING "connectpw";
EXEC SQL CONNECT TO unix:postgresql://localhost/connectdb?connect_timeout=14 USER connectuser;

这里有一个例子程序阐述了使用宿主变量指定连接参数:

int
main(void)
{
EXEC SQL BEGIN DECLARE SECTION;

char *dbname     = "testdb";    /*数据库名称*/
    char *user       = "testuser";  /*连接用户名*/
    char *connection = "tcp:postgresql://localhost:5432/testdb";
                                    /* 连接字符串 */
    char ver[256];                  /*存储版本字符串的缓冲区*/
EXEC SQL END DECLARE SECTION;

    ECPGdebug(1, stderr);

    EXEC SQL CONNECT TO :dbname USER :user;
    EXEC SQL SELECT version() INTO :ver;
    EXEC SQL DISCONNECT;

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

    EXEC SQL CONNECT TO :connection USER :user;
    EXEC SQL SELECT version() INTO :ver;
    EXEC SQL DISCONNECT;

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

    return 0;
}

兼容性

在SQL标准中声明CONNECT,但是 连接参数的格式是具体实施的。

参见

DISCONNECT, SET CONNECTION