Skip to content

连接池示例

见 win test_pool deamon。

具体的关键点 _USE_CPOOL_ 下面的内容:

int connectdb(char* ip_str,short port,char* db_name,char* use_name,char* password,Connect * connp)
{
    char t_dbname[50];
    char t_ipstr[50];
    short port1 ;
    char t_usr[50];
    char t_pwd[50];
    XuguCIHANDLE hdenv;
    XuguCIHANDLE hdsver;
    XuguCIHANDLE hddbc;
    XuguCIHANDLE hdstmt;
    strcpy(t_dbname, db_name);
    strcpy(t_ipstr, ip_str);
    strcpy(t_usr, use_name);
    strcpy(t_pwd, password);
    port1 = port;
    int * ver=(int*)malloc(4);
    * ver=XuguCI_ATTR_ENV_VERSION;
    short* port2=(short*)malloc(2);
    *port2= port1;
    int* isol=(int*)malloc(4);
    *isol=2;
    int * ze=(int*)malloc(4);
    *ze=0;
    int * len=(int*)malloc(4);
    *len=0;
    XuguCIHandleAlloc(NULL,&hdenv,HT_ENV);
    XuguCIHandleAttrSet(hdenv,1,(XuguCIPOINTER)ver,-1);
    int * use_pool=(int*)malloc(4);
#ifdef _USE_CPOOL_
    * use_pool=1;
    XuguCIHandleAttrSet(hdenv,2,(XuguCIPOINTER)use_pool,-1);
    XuguCIHandleAlloc(hdenv,&hdsver,HT_SERVER);
#else
    * use_pool=0;
    XuguCIHandleAttrSet(hdenv,2,(XuguCIPOINTER)use_pool,-1);
    XuguCIHandleAlloc(hdenv,&hdsver,HT_SERVER);
#endif
    XuguCIHandleAttrSet(hdsver,XuguCI_ATTR_SRV_IP,t_ipstr,XuguCI_NTS);
    XuguCIHandleAttrSet(hdsver,XuguCI_ATTR_SRV_PORT,(short*)port2,XuguCI_NTS);
    XuguCIHandleAttrSet(hdsver, XuguCI_ATTR_SRV_DBNAME,t_dbname,XuguCI_NTS);
    XuguCIHandleAlloc(hdsver,&hddbc,HT_SESSION);

    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_TIMEZONE,"GMT+08:00",XuguCI_NTS);
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_ENCRYPTOR,NULL,-1);
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_CHARSET,(int*)ver,XuguCI_NTS);
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_ISOLEVEL,(int*)isol,XuguCI_NTS);
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_SSL,ze,XuguCI_NTS);
    * ver=XuguCI_AUTOCOMMIT_ON ;
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_AUTO_COMMIT,(int*)ver,XuguCI_NTS);
    XuguCIHandleAttrSet(hddbc,XuguCI_ATTR_SESS_TIMEOUT,(int*)len,XuguCI_NTS);

    free(use_pool);
    free(ver);
    free(port2);
    free(isol);
    free(ze);
    free(len);
    int ret= XuguCISessionBegin( hddbc,(char*)t_usr,(char*)t_pwd);
    if ( ret < 0 )
    {
        printf("连接数据库失败Xugu connect db failure \n");
        return ret;
    }else{
        connp->hdenv=hdenv;
        connp->hdsver=hdsver;
        connp->hddbc=hddbc;
        printf("连接数据库成功Xuguconnect db OK \n");
        return ret;
    }
}