用ADO方式连接MYSQL数据库,贴出连接数据库的代码,还望各位指点下什么情况下连接总是断开。
InitializeCriticalSection(&MysqlQuery_Lock);
HRESULT hr;
try
{
hr = m_pConnect.CreateInstance("ADODB.Connection");
if (SUCCEEDED(hr))

char connectStr[500];
sprintf(connectStr,"Driver=MySQL ODBC 5.1 Driver;DATABASE=%s;server=%s", sqlName, addressAndPort);
_bstr_t strConnect=connectStr;
hr = m_pConnect->Open(strConnect,userName,password,adModeUnknown); return 0;
}
return -1;
}
catch (_com_error e)
{
Write_SrvRuning_Log(e.Description());
return -1;
}数据库MySQLVC

解决方案 »

  1.   

    m_pConnect调用Close,Release或者销毁的时候会断开,长久不用底层的Socket也会断开。
      

  2.   

    1.楼主在多线程下用的吗?是不是注册com组件的问题啊。AfxOleInit();或者CoInitialize(NULL),UnCoInitialize();
    2.InitializeCriticalSection(&MysqlQuery_Lock);
    也有可能是这个问题吧,应该还有个开始和结束语句的吧。控制锁。
      

  3.   


    mysql貌似有多个设置超时的地方.
      

  4.   


    不会是锁的缘故吧?
    我的意思事,你确定这个criticalsection调用正确?我记得有四个函数一起用的,initialize,begin,end,delete,貌似是这样的,记得不大清楚了。
      

  5.   


    不会是锁的缘故吧?
    我的意思事,你确定这个criticalsection调用正确?我记得有四个函数一起用的,initialize,begin,end,delete,貌似是这样的,记得不大清楚了。更正一下
    //构造中
    InitializeCriticalSection(&m_criticalSection);
    //函数开头
    EnterCriticalSection(&m_criticalSection);//your code
    //函数结尾LeaveCriticalSection(&m_criticalSection);
    //析构中
    DeleteCriticalSection(&m_criticalSection);
      

  6.   

    换了api连接数据库的方式,这个ado数据库断开的问题时而不出现,时而频繁出现。好纳闷