| 
                      hostcache[i].externalPort = atoi(row[2]);               if(row[3] != NULL)                      hostcache[i].internalIP   = atoi(row[3]);               if(row[4] != NULL)                      hostcache[i].internalPort = atoi(row[4]);                     }        //释放结果集内容        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;                  ///<未使用的连接句柄   //所有的连接句柄先连上数据库,加入到空闲队列中,等待使用. 
 |