馬平 8765 字 1個月前

ADO

(6 / 8)
⚡ 登入後報錯可獲 3天VIP 免廣告——立即登入

義和初始化一個用來操作的變量。可以通過使用智能指針

(_com_ptr_t)的構造函數傳遞一個有效的CLSID或者是PROGID,也可以通過_com_ptr_t::CreateInstance()方法來定義對象。具體代碼如下所示:

_ConnectionPtrConn1(__uuidof(Connection));

也可以采用下麵的代碼實現同樣的功能:

_ConnectionPtrConn1=NULL;\/\/定義對象

HRESULThr=S_OK;

\/\/創建實例

hr=Conn1.CreateInstance(__uuidof(Connection));

推薦采用第二種方式,因為用第一種方式不能返回一個失敗的HRESULT,所以也就不能判斷ADO連接對象是成功還是失敗,以及失敗的原因。注意這裡的__uuidof(Connection)中的Connection是在.tlh文件中定義的。通過把它傳遞給方法CreateInstance,就可以創建一個有效的ADOConnection對象。

需要注意的是#import的no_namespace屬性,它告訴編譯器該類在不在一個單獨的名字空間中。使用no_namespace意味著不需要在初始化變量時引用名字空間。當然如果在應用中需要導入多個類型庫時,最好不要使用no_namespace,以免引起名字衝突。

下麵是一個簡單的采用了#import方法的基於ADO應用的示例代碼:

#include

#importrename(“EOF”,“adoEOF”)

voidmain()

HRESULThr=S_OK;

\/\/因為沒有在#import中指定no_namespace,所以必須采用ADODB::這樣的形式來定義變量類型

ADODB::_RecordsetPtrRs1=NULL;

\/\/通過ODBC建立ADO連接

_bstr_tConnect(“DSN=AdoDemo;UID=sa;PWD=;”);

_bstr_tSource(“SELECT*FROMAuthors”);

CoInitialize();

\/\/初始化Rs1對象

hr=Rs1.CreateInstance(__uuidof(ADODB::Recordset));

\/\/省略對返回值hr的判斷

Rs1->Open(Source,

Aonnect,

ADODB::adOpenForwardOnly,

ADODB::adLockReadOnly,

-1);

讓您第一時間享受最新章節,請訪問𝗼𝗼𝗽.𝘁𝘄

\/\/此處可以添加對記錄集Rs1進行操作的代碼

Rs1->Close();

Rs1=NULL;

::MessageBox(NULL,“Success!”,“”,MB_OK);

CoUninitialize();

用MFCOLE創建ADO應用

MFCOLE同樣能夠封裝(wrapper)一個類型庫,但是與#import不同,它不能從類型庫中產生枚舉類型。MFC類CString和COleVariant隱藏了BSTRS和Variants的細節。由MFCOLE產生的類都繼承了類ColeDispatchDriver,由ADO產生的失敗的HRESULTS被封裝在類ColeDispatchException中。

用MFCOLEClassWizard創建ADO應用的步驟如下:

?從Tools菜單中,選擇Options選項中的Directoriestab條目,在ShowDirectories中的LibraryFiles中增加路徑C:\\programfiles\\commonfiles\\system\\ado,設置包含ADO類型庫的路徑。

?從View菜單中,激活ClassWizard,點擊AddClass按鈕並選擇“FromATypeLibrary...”選項,然後在TypeLibrarydialogbox對話框中,從C:\\programfiles\\commonfiles\\system\\ado中選擇文件msado15.dll,在ConfirmClasses對話框中,選擇所有列出的類並按OK按鈕退出ClassWizard。這樣,ClassWizard便生成了兩個文件msado15.h和msado15.cpp。

:碼代例示的用應ODA現實是麵下

象對MOC化始初/\/\

;)(tinIelOxfA

...

象對集據數義定/\/\

;1sRtesdroceR_

;enoitpecxEelOC

;)”;=DWP;as=DIU;omeDodA=NSD“(tcennoCtnairaVelOC

;)”srohtuAMORF*TCELES“(ecruoStnairaVelOC

象對集據數建創/\/\

;)e&,”0.2.tesdroceR.BDODA“(hctapsiDetaerC.1sR

,ecruoS)TNAIRAV((nepO.1sR

,tcennoC)TNAIRAV(

;)1-,1,0

碼代的理處行進1sR集果結對加添以可處此/\/\

;)(esolC.1sR

;)(hctapsiDesaeleR.1sR

;)”!sseccuS“(xoBegasseMxfA

程工ODA建創IPAMOC用

通以可也實其。revirDhctapsiDeloC和t_rtp_moc_自承繼別分們它,類裝封個一了生產象對化動自的定給個一著繞圍都ELOCFM和tropmi#


✅ 付款功能已修復,現在可以正常購買了 — 支援信用卡 · Apple Pay · Google Pay · WebATM · ATM 轉帳
😤 廣告總在最入戲的時候跳出來?
月付 $5 USD,升級 VIP 後全站所有頁面廣告立即全關——
不是只有這本書,是整個 oop.tw 每一頁、每一章,從此一路讀到底不被打斷。 $5 USD ≈ 一杯珍奶的錢,換一整個月零廣告清爽閱讀 · 隨時可取消
✅ 全站廣告全關 ✅ 工口專區全本解鎖 ✅ 月卡 $5 USD · 季卡 $13 USD · 年卡 $45 USD
⭐ 登入 / 免費註冊後升級
加我 LINE 好友,分享好書不錯過
第一時間獲得新書推薦、書單更新通知
立即加入
上一頁 書頁/目錄
/ 8 頁
下一頁
為本書評分(每位讀者可評一次,提交後無法修改)
發表評論
以 匿名讀者 身份發表
讀者評論