我初学ADO请多多帮忙,我系统是windows 2000,用Access 2000建了一个db3.mdb库(有一表welfare),db3.mdb存在"我的文档"里。我用VC的MFC向导建了一个单文档工程ADOmc(CADOmcView基于CListView),在stdafx.h里的最后一个#include的下一行加了#import "D:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF"),在BOOL CADOmcApp::InitInstance()的第一行加了AfxOleInit()函数。之后我在void CADOmcView::OnInitialUpdate()
函数里连库在CListView::OnInitialUpdate();后我添加了如下代码:
HRESULT hr;
try{
    hr = m_connection.CreateInstance(_uuidof(Connection));
    if(SUCCEEDED(hr))
       hr = m_connection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db3.mdb","","",adModeUnknown);
//出错(未指定错误),换为adModeShareDenyNone下面m_recordset->Open出错
//(Unknown error 0x800A0E81)
    if(SUCCEEDED(hr))
       hr = m_recordset.CreateInstance(_uuidof(Recordset));
    if(SUCCEEDED(hr))
       hr = m_recordset->Open("select * from welf",
           _variant_t((IDispatch *)m_connection,true),//换成
 //m_connection.GetInterfacePtr()或"Provider=Microsoft.Jet.OLEDB.4.0;Data 
//Source=db3.mdb"也都出错         adOpenDynamic,adLockOptimistic,adCmdText);//换成adOpenDynamic, 
//adLockOptimistic, adCmdText还出错
    if(SUCCEEDED(hr)) MessageBox("good");
    else MessageBox("bad");
    }
    catch (_com_error &e){
       MessageBox(e.ErrorMessage()); 
    }
其中注释反映了我程序出的错误,对于m_connection->Open用adModeUnknown就直接出错(消息框"未指定错误",我看网上的例子都这么设),用adModeShareDenyNone下面m_recordset->Open出错(消息框"Unknown error 0x800A0E81"),能帮我看看是怎么回事吗?(是我落了什么步骤或系统有问题吗?)谢谢了!

解决方案 »

  1.   

    _ConnectionPtr m_pConn;
        CString m_sConn="Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=d:\\db1.mdb";
        m_pConn.CreateInstance("ADODB.Connection");
        try
        {
            HRESULT hr=m_pConn->Open((_bstr_t)m_sConn,"","",adConnectUnspecified);    
            if (FAILED(hr))
            {
                AfxMessageBox("不能连接数据库 source!");
                return FALSE;
            }
        }
        catch(_com_error e)
        {
            AfxMessageBox("不能连接数据库 error!");
            return FALSE;
        }
      

  2.   

    datasource中数据库路径不在系统目录或debug目录下需自己指定。
      

  3.   

    把数据库考到d盘 
    CString m_sConn="Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=d:\\db1.mdb";