我想访问数据库StuInforManage的内容,但是运行到m_pLiuRecordset->Open就出错,请大侠帮忙看一下。
    CoInitialize(NULL);   
    _ConnectionPtr m_pLiuConnection;   
    HRESULT hr = m_pLiuConnection.CreateInstance(__uuidof(Connection));   
    if (!SUCCEEDED(hr))   
    {   
        return;   
    }   
   
    m_pLiuConnection->ConnectionTimeout = 10;   
    try   
    {   
        //m_pLiuConnection->Open((_bstr_t)strConnection,"","",NULL); 
m_pLiuConnection->Open("Provider=SQLOLEDB;DataSource=(local);InitialCatalog=StuInforManage","sa","123",adModeUnknown);
    }   
    catch (_com_error &e)   
    {   
::MessageBox(NULL,e.Description(),_T("警告"),MB_OKCANCEL);   
    }       _RecordsetPtr m_pLiuRecordset;   
    hr = m_pLiuRecordset.CreateInstance(__uuidof(Recordset));   
    if (FAILED(hr))   
    {   
:: MessageBox(NULL,_T("警告"),_T("创建选择集实例失败!"),MB_OKCANCEL);   
        return;   
    }   
    try   
    {   
        m_pLiuRecordset->Open("SELECT * from Log",_variant_t((IDispatch*)m_pLiuConnection,true),
          adOpenStatic,adLockOptimistic,adCmdText);//有问题
  
    }   
    catch (_com_error &e)   
    {   
::MessageBox(NULL,e.Description(),_T("警告"),MB_OKCANCEL);   
    }   
   
   
    _variant_t vValue;   
while (!m_pLiuRecordset->adoEOF)   
    {   
        try   
        {   
            vValue = m_pLiuRecordset->GetCollect("DoorNo");   
            CString str;   
            str = ((LPCSTR)(_bstr_t)vValue);   
            ((CListBox*)GetDlgItem(IDC_LIST_DISPLAY))->AddString(str);   
            m_pLiuRecordset->MoveNext();   
        }   
        catch (_com_error &e)   
        {   
::MessageBox(NULL,e.Description(),_T("警告"),MB_OKCANCEL);   
        }   
    } 
    CoUninitialize();   

解决方案 »

  1.   

    _variant_t((IDispatch*)m_pLiuConnection,true)  true 这个参数不用带入吧!!_variant_t((IDispatch*)m_pLiuConnection)就可以了
      

  2.   

    感觉还是不对,访问不了表。说对象名Log无效
      

  3.   

    SELECT * from [Log]
      

  4.   

    还是不行,我是建了一个对话框程序,然后直接在一个控件下写了这个代码,是不是还要先把数据库表导入工程呀?怎么弄呀?我看单文档在新建时可以导入ODBC的。我这个是ADO的。
      

  5.   

    ADO不需要导入表,是不是没有Log这个表?!
      

  6.   


    不用导入吧,我数据库课程设计就是用的VC6+sqlserver,直接用ADO连接就行了。不过把ADO连接数据库的部分封装成一个类会好一点吧,连接的时候直接调用