在我的CAdoConnection有如下定义:CAdoConnection::CAdoConnection()
{
///创建 Connection 对象---------------------------
m_pConnection.CreateInstance("ADODB.Connection");
ASSERT(m_pConnection != NULL);
}
...
当我调用 CAdoConnection m_adoConnection;
 
弹出 ”重试、放弃、副略“ 对话框 
也就是 ASSERT(m_pConnection != NULL); 报错
用afxDump<<m_pConnection<<"\n";观察
m_pConnection=0
请问 这是错在哪里?

解决方案 »

  1.   

    你只是创建了你个 _ConnectionPtr实例,只有Open()后它才连接到数据库了
     你尚未Open(), 所以他是NULL。
              AfxOleInit();
         m_pConnection.CreateInstance("ADODB.Connection");

    try

    m_pConnection->ConnectionTimeout = 8;
     
    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=userinfo.mdb","","",adModeUnknown);
         
    }
    catch(_com_error e)///捕捉异常
    {
    AfxMessageBox("数据库连接失败!");
    return FALSE;
    }
      

  2.   

    哦 ,原来是我忘了 AfxOleInit() 了,呵呵,
      

  3.   

    第一次引用connection就出错一般都是没有在初始化ole对象(AfxOleInit)。我也经常搞忘它