1. 程式人生 > >在VC中利用ADO程式設計

在VC中利用ADO程式設計

    _variant_t vUsername,vBirthday,vID,vOld;
    _RecordsetPtr m_pRecordset;
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pRecordset->Open("SELECT * FROM users",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    while(!m_pRecordset->adoEOF)///這裡為什麼是adoEOF而不是EOF呢?還記得rename("EOF","adoEOF")這一句嗎?
    {
 vID = m_pRecordset->GetCollect(_variant_t((long)0));///取得第1列的值,從0開始計數,你也可以直接給出列的名稱,如下一行
 vUsername = m_pRecordset->GetCollect("username");///取得username欄位的值
 vOld = m_pRecordset->GetCollect("old");
 vBirthday = m_pRecordset->GetCollect("birthday");
 ///在DEBUG方式下的OUTPUT視窗輸出記錄集中的記錄
 if(vID.vt != VT_NULL && vUsername.vt != VT_NULL && vOld.vt != VT_NULL && vBirthday.vt != VT_NULL)
  TRACE("id:%d,姓名:%s,年齡:%d,生日:%s/r/n",vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday);
 m_pRecordset->MoveNext();///移到下一條記錄
    }
    m_pRecordset->MoveFirst();///移到首條記錄
    m_pRecordset->Delete(adAffectCurrent);///刪除當前記錄
    ///新增三條新記錄並賦值
    for(int i=0;i<3;i++)
    {
 m_pRecordset->AddNew();///新增新記錄
 m_pRecordset->PutCollect("ID",_variant_t((long)(i+10)));
 m_pRecordset->PutCollect("username",_variant_t("葉利欽"));
 m_pRecordset->PutCollect("old",_variant_t((long)71));
 m_pRecordset->PutCollect("birthday",_variant_t("1930-3-15"));
    }
    m_pRecordset->Move(1,_variant_t((long)adBookmarkFirst));///從第一條記錄    往下移動一條記錄,即移動到第二條記錄處
    m_pRecordset->PutCollect(_variant_t("old"),_variant_t((long)45));///修改其年齡
    m_pRecordset->Update();///儲存到庫中