返回首页

gbase数据、南大通用产品文档:GBase8a负载均衡示例

更新日期:2024年09月11日

#ifdef WIN32
# include
#else
# include
#endif
#include
#include
#include
#include

#define isSuc(result) ((result) == SQL_SUCCESS || (result) ==
SQL_SUCCESS_WITH_INFO)
char* conn_str = "DRIVER=GBase 8a ODBC 8.3
Driver;UID=gbase;PWD=gbase20110531;"





"SERVER={192.168.7.172;192.168.7.173;192.168.7.174};"

GBase 8a 程序员手册ODBC 篇


- 58 -

南大通用数据技术股份有限公司





"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;
}

GBase 8a 程序员手册ODBC 篇
南大通用数据技术股份有限公司

- 59 -

for (i=0; i<6; i++)
{
sret = SQLDriverConnect(hdbc, NULL,(SQLCHAR*)conn_str,
SQL_NTS,NULL, 0, NULL, 0);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}

SQLGetInfo(hdbc, SQL_SERVER_NAME, hostinfo, 200, NULL);

printf("使用GBase 8a ODBC 高可用负载均衡连接GBase 集群节
点:%s.\n", hostinfo);

sret = SQLDisconnect(hdbc);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
}
sret = SQLFreeConnect(hdbc);
if(!isSuc(sret))
{
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
sret = SQLFreeEnv(henv);
if(!isSuc(sret))

GBase 8a 程序员手册ODBC 篇


- 60 -

南大通用数据技术股份有限公司
{
SQLGetDiagRec(SQL_HANDLE_ENV, henv, 1, NULL, NULL,
(SQLCHAR*)message, 1023, NULL);
printf("%s\n", message);
return -1;
}
return 0;
}

取值:[0|1]
默认值:0
说明:强制使用二进制方式比较,主要为了防止中文中有乱码(比如半个汉字)的
时候默认会把乱码之后的内容终止比较。默认关闭。
修改方式:可使用set 语句修改值也可在配置文件中修改值。仅用于global 范围。

aio 228709 20228 11.31 1005 203 4.95 213272 18556