hr = m_recordset->Open("Select * from li.mdb", "Driver={access}", adOpenDynamic, adLockOptimistic, adCmdText);
因为li.mdb数据库没有设置用户和密码,不知如何设置Open()中的项。

解决方案 »

  1.   

    我用过的一个函数,仅供参考。
    BOOL CADORecordset::Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec, int nOption)
    {
    Close();

    if(strcmp(lpstrExec, _T("")) != 0)
    m_strQuery = lpstrExec;ASSERT(!m_strQuery.IsEmpty());if(m_pConnection == NULL)
    m_pConnection = mpdb;m_strQuery.TrimLeft();
    BOOL bIsSelect = m_strQuery.Mid(0, strlen("Select ")).CompareNoCase("select ") == 0 && nOption == openUnknown;try
    {
    m_pRecordset->CursorType = adOpenStatic;
    m_pRecordset->CursorLocation = adUseClient;
    if(bIsSelect || nOption == openQuery || nOption == openUnknown)
    m_pRecordset->Open((LPCSTR)m_strQuery, _variant_t((IDispatch*mpdb, TRUE), adOpenStatic, adLockOptimistic, adCmdUnknown);
    else if(nOption == openTable)
    m_pRecordset->Open((LPCSTR)m_strQuery, _variant_t((IDispatch*)mpdb, TRUE), adOpenKeyset, adLockOptimistic, adCmdTable);
    else if(nOption == openStoredProc)
    {
    m_pCmd->ActiveConnection = mpdb;
    m_pCmd->CommandText = _bstr_t(m_strQuery);
    m_pCmd->CommandType = adCmdStoredProc;
    m_pConnection->CursorLocation = adUseClient;

    m_pRecordset = m_pCmd->Execute(NULL, NULL, adCmdText);
    }
    else
    {
    TRACE( "Unknown parameter. %d", nOption);
    return FALSE;
    }
    }
    catch(_com_error &e)
    {
    dump_com_error(e);
    return FALSE;
    }return m_pRecordset != NULL;
    }