知識(shí)寶典ADO.NET _CommandPtr接口
大家都喜歡用ADO.NET訪問(wèn)數(shù)據(jù)庫(kù),本人收集了大量的資料,現(xiàn)在就分享給大家,ADO庫(kù)包含三個(gè)基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。ADO.NET _CommandPtr接口返回一個(gè)記錄集或一個(gè)空指針。通常使用它來(lái)創(chuàng)建一個(gè)數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語(yǔ)句,如一個(gè)存儲(chǔ)過(guò)程。使用_ConnectionPtr接口返回一個(gè)記錄集不是一個(gè)好的使用方法。對(duì)于要返回記錄的操作通常用_RecordserPtr來(lái)實(shí)現(xiàn)。而用 _ConnectionPtr操作時(shí)要想得到記錄條數(shù)得遍歷所有記錄,而用_RecordserPtr時(shí)不需要。
#T#ADO.NET _CommandPtr接口返回一個(gè)記錄集。它提供了一種簡(jiǎn)單的方法來(lái)執(zhí)行返回記錄集的存儲(chǔ)過(guò)程和SQL語(yǔ)句。在使用_CommandPtr接口時(shí),你可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。如果你只執(zhí)行一次或幾次數(shù)據(jù)訪問(wèn)操作,后者是比較好的選擇。但如果你要頻繁訪問(wèn)數(shù)據(jù)庫(kù),并要返回很多記錄集,那么,你應(yīng)該使用全局_ConnectionPtr接口創(chuàng)建一個(gè)數(shù)據(jù)連接,然后使用 _CommandPtr接口執(zhí)行存儲(chǔ)過(guò)程和SQL語(yǔ)句。
ADO.NET _RecordsetPtr是一個(gè)記錄集對(duì)象。與以上兩種對(duì)象相比,它對(duì)記錄集提供了更多的控制功能,如記錄鎖定,游標(biāo)控制等。同_CommandPtr 接口一樣,它不一定要使用一個(gè)已經(jīng)創(chuàng)建的數(shù)據(jù)連接,可以用一個(gè)連接串代替連接指針賦給_RecordsetPtr的connection成員變量,讓它自己創(chuàng)建數(shù)據(jù)連接。如果你要使用多個(gè)記錄集,***的方法是同Command對(duì)象一樣使用已經(jīng)創(chuàng)建了數(shù)據(jù)連接的全局_ConnectionPtr接口,然后使用_RecordsetPtr執(zhí)行存儲(chǔ)過(guò)程和SQL語(yǔ)句?!?/P>
使用ADO.NET _CommandPtr接口,_CommandPtr接口返回一個(gè)Recordset對(duì)象,并且提供了更多的記錄集控制功能,以下代碼示例了使用ADO.NET _CommandPtr接口的方法:
- _CommandPtr pCommand;
- _RecordsetPtr pRs;
- pCommand.CreateInstance(__uuidof(Command));
- pCommand->ActiveConnection=pConn;
- pCommand->CommandText="select * from student";
- pCommand->CommandType=adCmdText;
- pCommand->Parameters->Refresh();
- pRs=pCommand->Execute(NULL,NULL,adCmdUnknown);
- _variant_t varValue = pRs->GetCollect("name");
- Cstring strValue=(char*)_bstr_t(varValue);
關(guān)于數(shù)據(jù)類型轉(zhuǎn)換由于COM對(duì)象是跨平臺(tái)的,它使用了一種通用的方法來(lái)處理各種類型的數(shù)據(jù),因此Cstring 類和COM對(duì)象是不兼容的,我們需要一組API來(lái)轉(zhuǎn)換COM對(duì)象和C++類型的數(shù)據(jù)。_vatiant_t和_bstr_t就是這樣兩種對(duì)象。它們提供了通用的方法轉(zhuǎn)換COM對(duì)象和C++類型的數(shù)據(jù)