我的类:
CMyAdo::CMyAdo()
{

AfxOleInit();
m_pConnection.CreateInstance("ADODB.Connection");
}CMyAdo::~CMyAdo()
{
   m_pConnection->Close();
}
CMyAdo::OnOpen()
{
  
if(m_pConnection)
{
    
    HRESULT hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);
if(SUCCEEDED(hr))
return 1;

}
return 0;
}
CMyAdo::OnClose()
{
if(m_pConnection->State==adStateOpen)
{
m_pConnection->Close();

}

}
_ConnectionPtr CMyAdo::GetPtr()
{
return m_pConnection;
}
我是在Dialog中加入的一个成员:
CMyAdo m_ado;
每次都只能打开一次成功,而后面就说(读取失败)???
调试发现,好象m_pConnection 的值关闭后还是没有变,除非关闭对话框

解决方案 »

  1.   

    你的对话框是不是用DoModle打开的.如是很正常.
      

  2.   

    CoInitialize(NULL);
    不要用AfxOleInit();
    不过不知道行不行。试一下吧。
      

  3.   

    将你的
    if(m_pConnection->State==adStateOpen)
    {
    m_pConnection->Close();

    }
    该为以下
    // 关闭ADO连接状态
    if(m_pConnection->State)
    m_pConnection->Close();
    m_pConnection= NULL;
      

  4.   

    在函数析构的时候delete 你的指针!
      

  5.   

    to fingerfox:
    不是啊,我每次打开后关闭了再打开的,和服务器上最大的允许数没什么关系吧。
    to qly2010:
    析构的时候delete指针也不行(我试了),com组件好象不需要用户析构吧