请问在VC中,我用ADO连数据库,怎样取某个表中某条记录(“多个字段的值”)呀

解决方案 »

  1.   

    MySet.CreateInstance(__uuidof(Recordset));
    ...
    MySet->GetCollect("FIELD_1")
      

  2.   

    http://www.vckbase.com/document/viewdoc.asp?id=215
      

  3.   

    sql语句会不会,如果使用ID取得某条记录的话请看
    "select * form tablename where id = youid"
    然后使用
    BOOL CCDData::SQLExe(char* sql)
    { COleVariant vNull,vValue;
    vNull.vt=VT_ERROR;
    vNull.scode=DISP_E_PARAMNOTFOUND;
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pRecordset->putref_ActiveConnection(m_piConnection);
    m_pRecordset->Open(sql,vNull,adOpenKeyset,adLockOptimistic,adCmdUnknown);
    m_lFld=m_pRecordset->Fields->GetCount();
    m_lNumRecord=m_pRecordset->RecordCount;
    if(!m_pRecordset->EndOfFile)
    m_pRecordset->MoveFirst();
    return TRUE;
    }
      

  4.   

    MSDN中的ADO C++ extensions:#define INITGUID
    #import "c:\Program Files\Common Files\System\ADO\msado15.dll" 
       no_namespace rename("EOF", "EndOfFile")
    #include <stdio.h>
    #include "icrsint.h"void dump_com_error(_com_error &e)
       {
    printf("Error\n");
    printf("\a\tCode = %08lx\n", e.Error());
    printf("\a\tCode meaning = %s", e.ErrorMessage());
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description());
    printf("\a\tSource = %s\n", (LPCSTR) bstrSource);
    printf("\a\tDescription = %s\n", (LPCSTR) bstrDescription);
       }class CCustomRs : 
       public CADORecordBinding
    {
    BEGIN_ADO_BINDING(CCustomRs)
       ADO_VARIABLE_LENGTH_BINDING_ENTRY(1, adVarChar, m_szau_lname, 
             sizeof(m_szau_lname), lau_lnameStatus, FALSE)
       ADO_VARIABLE_LENGTH_BINDING_ENTRY(2, adVarChar, m_szau_fname, 
             sizeof(m_szau_fname), lau_fnameStatus, TRUE)
    END_ADO_BINDING()public:
       CHAR   m_szau_lname[41];
       ULONG   lau_lnameStatus;
       CHAR   m_szau_fname[41];
       ULONG   lau_fnameStatus;
    };VOID   main()
       {
       HRESULT hr;
       IADORecordBinding   *picRs = NULL;
       
       ::CoInitialize(NULL);   try 
          {
          _RecordsetPtr pRs.CreateInstance(__uuidof(Recordset));      CCustomRs rs;
          
          pRs->Open("select FirstName, LastName, Age from Employees", 
             "dsn=pubs;uid=sa;pwd=;", 
             adOpenStatic, adLockOptimistic, adCmdUnknown);
          
          if (FAILED(hr = pRs->QueryInterface(__uuidof(IADORecordBinding), 
                (LPVOID*)&picRs)))
             _com_issue_error(hr);
          
          if (FAILED(hr = picRs->BindToRecordset(&rs)))
             _com_issue_error(hr);      while (VARIANT_FALSE == pRs->EndOfFile)
             {
          // 处理 CCustomRs C++ 实例变量中的数据。         printf("\a\tName = %s \t%s", 
                (lau_fnameStatus == adFldOK ? m_szau_fname : "<NULL>"), 
                (lau_lnameStatus == adFldOK ? m_szau_lname): "<NULL>"));      // 更改 Recordset 的当前行。
          // 新当前行的 Recordset 数据将被
          // 自动取出并防止在 CCustomRs C++ 实例变量中
       
             pRs->MoveNext();
             }
          }
       catch (_com_error &e)
          {
          dump_com_error(e);
          }   if (picRs)
          picRs->Release();   CoUninitialize();
       };