淺析使用ADO.NET _RecordsetPtr接口
#T#經(jīng)常上網(wǎng)收集一些資料,古人云:一分耕耘,一分收獲,這里就給大家講講關(guān)于ADO.NET _RecordsetPtr接口。希望大家有收獲。_RecordsetPtr是一個記錄集對象。與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定,游標(biāo)控制等。同_CommandPtr 接口一樣,它不一定要使用一個已經(jīng)創(chuàng)建的數(shù)據(jù)連接,可以用一個連接串代替連接指針賦給_RecordsetPtr的connection成員變量,讓它自己創(chuàng)建數(shù)據(jù)連接。如果你要使用多個記錄集,***的方法是同Command對象一樣使用已經(jīng)創(chuàng)建了數(shù)據(jù)連接的全局ADO.NET _RecordsetPtr接口,然后使用_RecordsetPtr執(zhí)行存儲過程和SQL語句。使用ADO.NET _RecordsetPtr接口(以連接SQL Server為例):
- _RecordsetPtr pPtr;
- if (FAILED(pPtr.CreateInstance("ADODB.Recordset")))
- {
- AfxMessageBox("Create Instance failed!");
- return FALSE;
- }
- CString strSRC;
- strSRC="Driver=SQL Server;Server=";
- strSRC+="210.46.141.145";
- strSRC+=";Database=";
- strSRC+="mydb";
- strSRC+=";UID=sa;PWD=";
- strSRC+="sa";
- CString strSQL = "select id,name,gender,address from personal";
- _variant_t varSRC(strSRC);
- _variant_t varSQL(strSQL);
- if(FAILED(pPtr->Open(varSQL,varSRC,adOpenStatic,adLockOptimistic,adCmdText)))
- {
- AfxMessageBox("Open table failed!");
- pPtr.Release();
- return FALSE;
- }
- while(!pPtr->GetadoEOF())
- {
- _variant_t varNo;
- _variant_t varName;
- _variant_t varSex;
- _variant_t varAddress;
- varNo = pPtr->GetCollect ("id");
- varName = pPtr->GetCollect ("name");
- varSex = pPtr->GetCollect ("gender");
- varAddress = pPtr->GetCollect ("address");
- CString strNo =(char *)_bstr_t(varNo);
- CString strName =(char *)_bstr_t(varName);
- CString strSex =(char *)_bstr_t(varSex);
- CString strAddress =(char *)_bstr_t(varAddress);
- strNo.TrimRight();
- strName.TrimRight();
- strSex.TrimRight();
- strAddress.TrimRight();
- int nCount = m_list.GetItemCount();
- int nItem = m_list.InsertItem (nCount,_T(""));
- m_list.SetItemText (nItem,0,strNo);
- m_list.SetItemText (nItem,1,strName);
- m_list.SetItemText (nItem,2,strSex);
- m_list.SetItemText (nItem,3,strAddress);
- pPtr->MoveNext();
- }
- pPtr->Close();
- pPtr.Release();