MySQL重新连接问题请教
大家都知道,MySQL服务器会将一个在wait_timeout时间内没有任何动作的连接自动关闭,所以,如果一个连接被关闭后,客户端如果想要再次执行查询,必须重新连接。   
 我的客户端通过VC6+ODBC+ADO与MySQL通讯,共使用10个连接,其中任何一个可能会很长时间无动作,我的问题是: 
 当某次查询失败时,我使用如下方法立即重新连接,连接成功,但查询失败,但如果等待3分钟左右重新连接,则查询成功:_ConnectionPtr::Close(),_ConnectionPtr::Release(),_ConnectionPtr::Open().   
 请高手指点,以上方法为何不妥,是否有更好的方法。
------解决方案--------------------BOOL    
 ConfigureDBDataSource(const char * pMCSCode, const char * pIP, BOOL bAutoReconnect)   
 {   
          char lpszAttributes[300] =  " ";   
          int nLen = 0;        
          sprintf((char *)&lpszAttributes[nLen],  "DSN=%s ", pMCSCode);   
          nLen += (strlen((char *)&lpszAttributes[nLen]) + 1);   
          strcpy((char *)&lpszAttributes[nLen],  "Database=IRIS ");   
          nLen += (strlen((char *)&lpszAttributes[nLen]) + 1);   
          strcpy((char *)&lpszAttributes[nLen],  "Description= ");   
          nLen += (strlen((char *)&lpszAttributes[nLen]) + 1);   
          sprintf((char *)&lpszAttributes[nLen],  "Password=%s ", DB_REMOTE_GRANT_PASSWORD);   
          nLen += (strlen((char *)&lpszAttributes[nLen]) + 1);   
          strcpy((char *)&lpszAttributes[nLen],  "Port=3306 ");   
          nLen += (strlen((char *)&lpszAttributes[nLen]) + 1);   
          sprintf((char *)&lpszAttributes[nLen],  "Server=%s ", pIP);   
          nLen += (strlen((char *)&lpszAttributes[nLen]) + 1);   
          sprintf((char *)&lpszAttributes[nLen],  "User=%s ", DB_REMOTE_GRANT_USER);   
          if (bAutoReconnect)   
          {   
                    nLen += (strlen((char *)&lpszAttributes[nLen]) + 1);   
                    sprintf((char *)&lpszAttributes[nLen],  "OPTION=4194304 ", DB_REMOTE_GRANT_USER);   
          }        
          return SQLConfigDataSource( NULL,    
                                                                            ODBC_ADD_SYS_DSN, //   
                                                                             "MySQL ODBC 3.51 Driver ", (char *)lpszAttributes);   
 }