MFC程序已经开发到一定阶段了,才发现如果想同access数据库连接,需要在应用程序开始创建的时候进行相关选择。
我不想再重新开始一遍了,不知道有没有什么办法,能够在已经开发了的程序上连接数据库呢?

解决方案 »

  1.   

    这只是COM接口初始化的问题
    //主程序开头初始化函数:
    CoInitialize(NULL);   
    //主程序结束释放函数:  
    CoUninitialize();   
      

  2.   

    在InitInstance()函数中进行初始化,代码如下:
    if (!AfxOleInit())
    {
    AfxMessageBox("初始化COM库失败");
    return FALSE;
    }
    HRESULT hr;
    try
    {
    hr = m_pConnection.CreateInstance("ADODB.Connection");
    if(SUCCEEDED(hr))
    {
    CHAR HD[]="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=User.mdb;Persist security info=False;Jet OLEDB:Database Password=815815";
    hr = m_pConnection->Open(HD,"","",adModeUnknown);

    }
    }
    catch(_com_error e)///捕捉异常
    {
    CString errormessage;
    errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
    AfxMessageBox(errormessage);///显示错误信息
    return false;
    }
      

  3.   

    对不起,之前描述不清楚。我创建的是MFC AppWizard(exe)程序,选择单文档以后,直接点击的完成,而没有进行数据库的选择、连接。
    也就是说database support选项,我选择的是NULL,不是通常的database view without file support。
    所以也没有自动生成m_pConnection。有没有什么办法能够再重新添加数据库连接的?
      

  4.   

    好像要在头文件加入 #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
      

  5.   

    总感觉在class wizard里面有,不知道建立新的class的时候,是不是跟base class有关系
      

  6.   

    先在stdafx.h头文件中包含
    #import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")然后还要在app的InitInstance事件中初始化com接口。
    CoInitialize(NULL);
      
    完了要在app的ExitInstance事件中,反初始化回去
    CoUninitialize();