华为云云数据库GaussDBCONNECT_云淘科技
功能描述
在客户端和SQL服务器之间建立连接。
语法格式
CONNECT TO connection_target [ AS connection_name ] [ USER connection_user ]
参数说明
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 string constant:包含上述形式之一的值。
connection_name
用于该连接的一个可选标识符,可以在其他命令中引用它。可以是一个SQL标识符或者一个宿主变量。
connection_user
用于数据库连接的用户名。
使用user_name/password、user_name SQLIDENTIFIED BY password或者user_name USING password之一,这个参数也能指定用户名和口令。
用户名和口令可以是SQL标识符、字符串常量或者宿主变量。
上述参数中斜体部分为变量,请根据实际情况进行修改。
示例
指定连接参数的变体的示例:
EXEC SQL CONNECT TO "connectdb" AS main; EXEC SQL CONNECT TO "connectdb" AS second; EXEC SQL CONNECT TO 'connectdb' AS main; EXEC SQL CONNECT TO REGRESSDB1 as main; EXEC SQL CONNECT TO connectdb AS :id; EXEC SQL CONNECT TO connectdb AS main USER connectuser/connectdb; EXEC SQL CONNECT TO connectdb AS main USER connectuser USING "connectdb"; EXEC SQL CONNECT TO connectdb AS main; EXEC SQL CONNECT TO tcp:postgresql://localhost/connectdb USER connectuser IDENTIFIED BY ********; EXEC SQL CONNECT TO tcp:postgresql://localhost:20/connectdb USER connectuser SQLIDENTIFIED BY *********; EXEC SQL CONNECT TO unix:postgresql://localhost/connectdb USER connectuser SQLIDENTIFIED BY "********"; EXEC SQL CONNECT TO unix:postgresql://localhost/connectdb USER connectuser USING "*********";
连接语法示例:
#include #include #include #include int main(void) { // 宿主变量定义,定义连接串所需的database、password等字段。 exec sql begin declare section; const int max_str_len = 200; char db[max_str_len]; char pw[max_str_len]; exec sql end declare section; // 打印调试日志 ECPGdebug(1, stderr); // 连接语句涉及数据库、用户、密码。需提前创建好并有相关操作权限,示例如下。 // create database connectdb; // create user connectuser with password '********'; // grant all privileges to connectuser; // 连接方式:EXEC SQL CONNECT TO [ database_name ][ @host ][ :port ] [ USER connection_user ] // case1: 使用默认的本地连接方式,连接数据库为postgres库。 exec sql connect to postgres; // case2:使用默认的本地连接方式,连接数据库为postgres库, 连接别名为conn1。 exec sql connect to postgres as conn1; // case3:使用ip+port方式(localhost数据库监听的本地地址,25632数据库监听端口),连接数据库为connectdb库, 指定数据库别名,指定用户密码。 exec sql connect to connectdb@localhost:25632 as conn2 user connectuser using "********"; // case4:使用ip+port方式(127.0.0.1数据库监听的本地地址,25632数据库监听端口),连接数据库为connectdb库, 指定数据库别名,指定用户密码。 exec sql connect to connectdb@127.0.0.1:25632 as conn3 user connectuser sqlidentified by "********"; // case5: 关闭数据库连接 exec sql disconnect postgres; exec sql disconnect conn1; exec sql disconnect conn2; exec sql disconnect conn3; // 连接方式:EXEC SQL CONNECT TO :://host [ :port ]/[ database_name ][ ?connection_option ] // case1: 通过宿主变量pw、db方式,替换url变量。 strcpy(pw, "********"); strcpy(db, "tcp:postgresql://localhost/connectdb"); exec sql connect to :db user connectuser using :pw; // case2: 其中127.0.0.1为数据库监听ip,connectdb为数据库database。 exec sql connect to tcp:postgresql://127.0.0.1/connectdb as conn4 user connectuser using "********"; // case3:其中127.0.0.1为数据库监听ip,connectdb为数据库database,connect_timeout=14为连接串配置参数。 exec sql connect to tcp:gaussdb://localhost/connectdb?connect_timeout=14 as conn5 user connectuser sqlidentified by "********"; // case4: 关闭所有连接 exec sql close all; // 连接数据库,并执行业务 exec sql connect to tcp:postgresql://127.0.0.1/connectdb as conn4 user connectuser using "********"; exec sql set autocommit = on; exec sql create table t1(a int); exec sql insert into t1 values(1),(2); exec sql select a from t1 where a > 1; exec sql drop table t1; exec sql disconnect current; return 0; }
使用宿主变量指定连接参数的示例:
#include #include #include int main(void) { EXEC SQL BEGIN DECLARE SECTION; char *dbname = "testdb"; /* 数据库名 */ char *user = "testuser"; /* 连接用户名 */ char *pwd = "********"; /* 密码 */ char *connection = "tcp:postgresql://localhost:5432/testdb"; /* 连接字符串 */ char ver[256]; /* 存储版本字符串的缓冲区 */ EXEC SQL END DECLARE SECTION; ECPGdebug(1, stderr); EXEC SQL CONNECT TO :dbname; 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 ", ver); EXEC SQL CONNECT TO :connection USER :user USING :pwd; 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 ", ver); return 0; }
相关链接
DISCONECT,SET CONNECTION
父主题: 嵌入式SQL命令
同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家