具体如下:/***strConnect====连接字符串,已赋值*****/BOOL CAdo::ConnectDB()
{ CString strbuf;
         try
{
m_pConnection.CreateInstance(__uuidof(Connection));
                  WriteLog("123");//这句还能执行,但到下面 就突然异常
m_pConnection->CursorLocation=adUseClient;//执行到这一步,就异常了,而且也没捕获到异常
HRESULT  hr=m_pConnection->Open(m_strConnect,"","",adModeUnknown); if(!SUCCEEDED(hr))  
{
   return FALSE;
}
}
catch(_com_error e)
{ if(m_pConnection->State)
{
m_pConnection->Close();
}
m_pConnection=NULL;     return false;
} return TRUE;
}

解决方案 »

  1.   

    com没有初始化吧。
    你应该在程序开始调用 ::CoInitialize(NULL);
      

  2.   

    CAdo是我自己写得一个类CAdo::CAdo()
    {
    CoInitialize(NULL);
    memset(this->m_strConnect,0,sizeof(this->m_strConnect));
    memset(this->m_strTable,0,sizeof(this->m_strTable));
    memset(this->m_strWhere,0,sizeof(this->m_strWhere));
    //sprintf(m_strConnect,"Driver={SQL   Server};Server=%s;Option=3;DATABASE=%s;UID=sa;PWD=%s;","IP","数据库","密码");
    }
      

  3.   

    m_pConnection.CreateInstance(__uuidof(Connection));
    应该是这句执行失败,m_pConnection为空指针吧。
    这种错误应该是没有初始化COM引起的。你是不是在多线程中使用了CADO?那样的话每个线程都要初始化COM
      

  4.   

    大侠说的很对。给大侠看下我的多线程中的代码:void CListener::Run()
    {    int nRet=0;
        CAdo     adooo;    while(true)
       {
           sprintf(adooo.m_strConnect,"Driver={SQL Server};Server=%s;Option=3;DATABASE=%s;UID=%s;PWD=%s;",m_strDBIP,m_strDBName,m_strDBAcc,m_strDBPwd);        if(!adooo.ConnectDB())
    {
        Sleep(1000)
        continue;
    }
            
    }
    这个是线程处理函数CAdo  adooo;这个在构造函数中 已经调用了 CoInitialize(NULL);
      

  5.   

    m_pConnection.CreateInstance(__uuidof(Connection));执行后 M_pConnection==NULL为什么
      

  6.   

    看上去就都没什么问题了。你把m_pConnection.CreateInstance(__uuidof(Connection));改成m_pConnection.CreateInstance("ADODB.Connection");试试。再不行你把代码放上来我下载调试看看
      

  7.   

    HRESULT hr =  ::CoInitialize(NULL);
    这里判断一下是否成功:
    if(SUCCEEDED(hr))
      

  8.   

    m_pConnection.CreateInstance(__uuidof(Connection));改成m_pConnection.CreateInstance("ADODB.Connection");大侠 这两种 写法 有什么区别吗 
      

  9.   

    奇怪的是在我本地机器上 就没有问题但在客户那 就有问题他得时WIN 2003
      

  10.   

    搞不好是ado dll版本不对应.
      

  11.   

    m_pConnection.CreateInstance(__uuidof(Connection));
    执行后m_pConnection==NULL
    不知道了 
    这个版本,在俩个不同的用户那 用 一个没问题一个就出现这个问题了