ADO-添加msado15.dll及基本類對象的了解


一、dll文件的導入

參考文獻:https://blog.csdn.net/qq_31209383/article/details/51199762

要使用數據庫,首先在stdafx.h中導入msado15.dll

#import #import "C:/Program Files/Common Files/System/ADO/msado15.dll" no_namespace rename("EOF","adoEOF")

但這樣會報錯,解決辦法如上面鏈接:

方法一:使用命名空間;

方法二:不使用命名空間,但將所有報錯的重定義名稱rename一下;

方法三:project -> setting -> C/C++ ->perprocessor ->perprocessor definitions :  里面添加 宏   _AFX_NO_DAO_SUPPORT

二、_ConnectionPtr、_RecordPtr是什么

這是微軟封裝好的智能指針,供調用數據庫使用。這兩個指針,即是類又是指針。

作為類,使用.操作符,這時候調用的是該類自己的方法,如pCon.CreateInstance("ADODB.Connection")就是創建實現一個com組件內的Connection對象,並將該對象的指針賦值給pCon,此時pCon就是一個接口指針了,此時就用->操作符。

三、Connection、_Connection與_ConnectionPtr之間的區別

_Connection是Connection的接口,是個struct結構,后者實現了前者。

_ConnectionPtr是對_Connection封裝后的智能指針,_com_ptr_t,智能指針實質上也是個類,是對指針進行了封裝;

Connection是COM組件類,即有CoClass屬性;

前兩者是指針,后者是類。

四、COM與MFC之間數據轉化問題

MFC內的數據結構(字符串,數字等)必須轉化成滿足COM結構的數據類型才能被COM的函數使用。

_bst_r,VARIANT,CComBSTR,CComVariant都是把MFC轉化成COM數據類型的類或類型。

五、Close()與Release()的區別

Close()只是關閉通道,並不釋放內存資源

Release(),釋放對接口指針的引用。打開一個通道前必須檢查上一個通道關閉並釋放資源(查看pCon==NULL),如果沒有,必須釋放,否則無法使用。

因此Close()不是必須的,Release()是。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM