摘要:
gbase_real_connect()尝试与运行在主机上的GBase 数据库引擎建立连接。
在你能够执行需要有效GBase 连接句柄结构的任何其他API 函数之前,
gbase_real_connect()必须成功完成。
语法:
GBASE * gbase_real_connect(GBASE *gbase,
const char *host,
const char *user,
const char *passwd,
const char *db,
unsigned int port,
const char *unix_socket,
unsigned long clientflag);
参数:
GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司
- 35 -
gbase
调用gbase_real_connect()之前,
必须调用gbase_init()来
初始化GBASE 结构。
host
必须是主机名或IP 地址。如果“host”是NULL 或字符串
"localhost",连接将被视为与本地主机的连接。如果操作系
统支持套接字(Unix)或命名管道(Windows)
,将使用它们
而不是TCP/IP 连接到服务器。如果使用支持集群IP 路由的
GBase C API 连接GBase 8a 数据库集群时,host 可以是包含
几个集群节点IP 的字符串,IP 之间以“;”进行分割。这样
可以使用GBase C API 的集群IP 路由功能。
user
用户的GBase 登录ID。如果“user”是NULL 或空字符串"",
用户将被视为当前用户。
passwd
用户的密码
db
数据库名称。
如果db 为NULL,
连接会将默认的数据库设为该
值。
port
如果“port”不是0,其值将用作TCP/IP 连接的端口号。注
意,
“host”参数决定了连接的类型。
unix_socket 如果unix_socket 不是NULL,该字符串描述了应使用的套接
字或命名管道。注意,
“host”参数决定了连接的类型。
clientflag 其值通常为0,
但是,
也能将其设置为下述标志的组合,
以允
许特定功能:
标志名称
标志描述
CLIENT_COMPRESS
使用压缩协议。
GBase 8a 程序员手册C API 篇
- 36 -
南大通用数据技术股份有限公司
标志名称
标志描述
CLIENT_FOUND_RO
WS
返回发现的行数(匹配的)
,而不是受影响的行数。
CLIENT_IGNORE_S
PACE
允许在函数名后使用空格。使所有的函数名成为保
留字。
CLIENT_INTERACT
IVE
关闭连接之前,允许interactive_timeout(取代
了wait_timeout)秒的不活动时间。客户端的会话
wait_timeout 变量被设为会话
interactive_timeout 变量的值。
CLIENT_LOCAL_FI
LES
允许LOAD DATA LOCAL 处理功能。
CLIENT_MULTI_ST
ATEMENTS
通知服务器,客户端可能在单个字符串内发送多条
语句(由‘;’隔开)
。如果未设置该标志,将禁止多语
句执行。
CLIENT_MULTI_RE
SULTS
通知服务器,客户端能够处理来自多语句执行或存
储程序的多个结果集。如果设置了
CLIENT_MULTI_STATEMENTS,将自动设置它。
CLIENT_NO_SCHEM
A
禁止db_name.tbl_name.col_name 语法。它用于
ODBC。如果使用了该语法,它会使分析程序生成错
误,在捕获某些ODBC 程序中的缺陷时,它很有用。
CLIENT_ODBC
客户端是ODBC 客户端。它将gbased 变得更为ODBC
友好。
CLIENT_SSL
使用SSL
(加密协议)
。
该选项不应由应用程序设置,
它是在客户端库内部设置的。
返回值:
如果连接成功,返回GBASE*连接句柄。如果连接失败,返回NULL。对于成
功的连接,返回值与第1 个参数的值相同。
错误
GBase 8a 程序员手册C API 篇
南大通用数据技术股份有限公司
- 37 -
CR_CONN_HOST_ERROR
无法连接到GBase 服务器。
CR_CONNECTION_ERROR
无法连接到本地GBase 服务器。
CR_IPSOCK_ERROR
无法创建IP 套接字。
CR_OUT_OF_MEMORY
内存溢出。
CR_SOCKET_CREATE_ERROR
无法创建Unix 套接字。
CR_UNKNOWN_HOST
无法找到主机名的IP 地址。
CR_VERSION_ERROR
协议不匹配
CR_NAMEDPIPEOPEN_ERROR
无法在Windows 平台下创建命名管道。
CR_NAMEDPIPEWAIT_ERROR
在Windows 平台下等待命名管道失败。
CR_NAMEDPIPESETSTATE_ERROR 在Windows 平台下获取管道处理程序失败。
CR_SERVER_LOST
如果connect_timeout > 0,而且在连接
服务器时所用时间长于connect_timeout
秒,
或在执行init-command时服务器消失。