要不然,你试试下面的代码:        try
        {
                hr = pConn.CreateInstance(__uuidof(Connection));
                if (FAILED(hr))
                        _com_raise_error(hr);
                pConn->ConnectionString=_bstr_t(CS_ConnStr);
                pConn->Mode=adModeReadWrite;
                if (pConn->State != adStateOpen )
                {
                        hr = pConn->Open(L"",L"",L"",-1);
                        if (FAILED(hr))
                                _com_raise_error(hr);
                }
        }
        catch(_com_error &e)
        {
                throw e;
                return FALSE;
        }
        return TRUE;

解决方案 »

  1.   

    这是ADO的BUGADO析构的时候,会清空错误消息.....
    这样写。。加个{{
    _RecordsetPtr adoRs=NULL;
    try
    {
        adoRs.CreateInstance(__uuidof(Recordset));
        adoRs->PutCursorLocation(adUseClient);
        adoRs->Open("select * from student",
            "Provider=Microsoft.Jet.OLEDB.4.0;Password='';
            DataSource=d:\\sample.mdb;Persist Security Info=True", 
        adOpenStatic,adLockBatchOptimistic,adCmdText);
        adoRs->AddRef ();
        return S_OK;
    }
    catch(_com_error e)
    {
      *x=e.Description();
    }}///--------这里ADO 已释放  return AtlReportError(CLSID_a,(LPCOLESTR)e.Description (),
      IID_Ia,e.Error ());