CONNECT — установка соединения с базой данных
оператор CONNECT TOconnection_target[ ASconnection_name] [ USERconnection_user] CONNECT TO DEFAULT CONNECTconnection_userDATABASEconnection_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
содержащая значение в одной из вышеуказанных форм
главная переменная типа char[]
или VARCHAR[] содержащая значение в одной из
вышеуказанных форм
connection_name #Необязательный идентификатор соединения, позволяющий ссылаться на него в других командах. Это может быть идентификатор SQL или главная переменная.
connection_user #Имя пользователя для подключения к базе данных.
Данный параметр также может определять имя пользователя и пароль в одной из следующих форм:
,
user_name/пароль, или
user_name IDENTIFIED BY пароль.
user_name USING пароль
Имя пользователя и пароль могут быть идентификаторами 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"; /* имя базы данных dbname */
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 функция pg_catalog.set_config('search_path', '', false); оператор 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); оператор COMMIT;
оператор EXEC SQL SELECT version() предложение INTO :ver;
EXEC SQL DISCONNECT;
printf("version: %s\n", ver);
return 0;
}
CONNECT определен в стандарте SQL, однако формат параметров подключения зависит от конкретной реализации.