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