高可用性示例
#ifdef WIN32
#include
"192.168.5.65",
"192.168.5.64;192.168.5.65",
"192.168.5.65;192.168.5.64",
"192.168.5.64;192.168.5.64",
"192.168.5.64;192.168.5.64;192.168.5.65",
"192.168.5.64;192.168.5.65;192.168.5.64",
"192.168.5.65;192.168.5.64;192.168.5.64",
"192.168.5.65;192.168.5.66",
NULL};
int main(void)
{
char conn_format[200] = "DRIVER={GBase 8a ODBC 8.3 Driver};"
"SERVER={%s};UID=root;PWD=1;DATABASE=test;PORT=5258;";
char conn[200] = {'\0'};
int i = 0;
short sret; //返回代码
void* henv; //环境句柄
void* hdbc; //连接句柄
/** 申请环境句柄**/
sret =
SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if(!isSuc(sret))printf("申请环境句柄出错\n");
/** 设置环境属性,声明 ODBC 版本**/
sret =
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
if(!isSuc(sret))printf("声明 ODBC 版本出错\n");
/** 申请连接句柄**/
sret = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if(!isSuc(sret))printf("申请连接句柄出错\n");
/** 设置连接属性**/
sret = SQLSetConnectAttr(hdbc,SQL_ATTR_AUTOCOMMIT,
(void*)SQL_AUTOCOMMIT_OFF,SQL_IS_INTEGER);
if(!isSuc(sret))printf("设置连接属性出错\n");
while(*hosts[i])
{
sprintf(conn, conn_format, hosts[i]);
/** 连接数据源**/
sret = SQLDriverConnect(hdbc,NULL,(unsigned char *)conn,
SQL_NTS, NULL, 0, NULL, 0);
if(!isSuc(sret))printf("连接%s 出错\n", hosts[i]);
else printf("连接%s 成功\n", hosts[i]);
SQLDisconnect(hdbc);
memset(conn, '\0', strlen(conn));
i++;
}
return 0;
}
负载均衡示例
#ifdef WIN32
# include
"CONNECTION_BALANCE=1;GCLUSTER_ID=gcluster;"
"CHECK_INTERVAL=90;";
int main(void)
{
short sret;
void* henv;
void* hdbc;
char message[512];
char hostinfo[100];
int i = 0;
sret = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
sret =
SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
sret = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
for (i=0; i<6;>
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
return 0;
}




