sp; strcpy(hostcache[i].sessionid, row[0]); if(row != NULL) hostcache[i].externalIP = atoi(row); if(row != NULL) hostcache[i].externalPort = atoi(row); if(row != NULL) hostcache[i].internalIP = atoi(row); if(row != NULL) hostcache[i].internalPort = atoi(row); } //释放结果集内容 mysql_free_result(pResultSet); return iReturnNumRows;} l 使用连接池管理连接.在有大量节点访问的数据库设计中,经常要使用到连接池来管理所有的连接.一般方法是:建立两个连接句柄队列,空闲的等待使用的队列和正在使用的队列.当要
查询时先从空闲队列中获取一个句柄,插入到正在使用的队列,再用这个句柄做数据库操作,完毕后一定要从使用队列中删除,再插入到空闲队列.设计代码如下: //定义句柄队列typedef std::list<MYSQL *> CONNECTION_HANDLE_LIST;typedef std::list<MYSQL *>::iterator CONNECTION_HANDLE_LIST_IT; //连接数据库的参数结构class CDBParameter {public: char *host; ///<主机名 char *user; ///<用户名 char *password; ///<密码 char *database; ///<数据库名 unsigned int port; ///<端口,一般为0 const char *Unix_socket; ///<套接字,一般为NULL unsigned int client_flag; ///<一般为0}; //创建两个队列CONNECTION_HANDLE_LIST m_lsBusyList; ///<正在使用的连接句柄CONNECTION_HANDLE_LIST m_lsIdleList; ///<未使用的连接句柄 //所有的连接句柄先连上数据库,加入到空闲队列中,等待使用.bool CDBManager::Connect(char * host /* = "localhost" */, char * user /* = "chenmin" */,