可以使用Visual C++提供的ActiveX控件開發(fā)應(yīng)用程序,還可以用ADO對(duì)象開發(fā)應(yīng)用程序。使用ADO對(duì)象開發(fā)應(yīng)用程序可以使程序開發(fā)者更容易地控制對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),從而產(chǎn)生符合用戶需求的數(shù)據(jù)庫(kù)訪問(wèn)程序。
使用ADO對(duì)象開發(fā)應(yīng)用程序也類似其他技術(shù),需產(chǎn)生與數(shù)據(jù)源的連接,創(chuàng)建記錄等步驟,但與其他訪問(wèn)技術(shù)不同的是,ADO技術(shù)對(duì)對(duì)象之間的層次和順序關(guān)系要求不是太嚴(yán)格。在程序開發(fā)過(guò)程中,不必先建立連接,然后才能產(chǎn)生記錄對(duì)象??梢栽谑褂糜涗浀牡胤街苯邮褂糜涗泴?duì)象,在創(chuàng)建記錄對(duì)象的同時(shí),程序自動(dòng)建立了與數(shù)據(jù)源的連接。這種模型有力地簡(jiǎn)化了程序設(shè)計(jì),增強(qiáng)了程序的靈活性。下面講述使用ADO對(duì)象進(jìn)行程序設(shè)計(jì)的方法。
(1)引入ADO庫(kù)文件
使用ADO前必須在工程的stdafx.h文件里用直接引入符號(hào)#import引入ADO庫(kù)文件,以使編譯器能正確編譯。代碼如下所示:
#define INITGUID
#import "c:\program files\common files\system\ado\msado15. dll"
no_namespace rename("EOF"," EndOfFile")
#include "icrsint.h"
這行語(yǔ)句聲明在工程中使用ADO,但不使用ADO的名字空間,并且為了避免沖突,將EOF改名為EndOfFile。
(2)初始化ADO環(huán)境
在使用ADO對(duì)象之前必須先初始化COM環(huán)境,初始化COM環(huán)境可以用以下代碼完成:
::CoInitialize(NULL);
在初始化COM環(huán)境后,就可以使用ADO對(duì)象了,如果在程序前面沒有添加此代碼,將會(huì)產(chǎn)生COM錯(cuò)誤。
在使用完ADO對(duì)象后,需要用以下的代碼將初始化的對(duì)象釋放:
::CoUninitialize();
此函數(shù)清除了為ADO對(duì)象準(zhǔn)備的COM環(huán)境。
(3)使用ADO訪問(wèn)數(shù)據(jù)庫(kù)
__ConnectionPtr是一個(gè)連接接口,首先創(chuàng)建一個(gè)__ConnectionPtr接口實(shí)例,接著指向并打開一個(gè)ODBC數(shù)據(jù)源或OLE DB數(shù)據(jù)提供者(Provider)。以下代碼分別創(chuàng)建一個(gè)基于DSN和非DSN的數(shù)據(jù)連接。
//使用__ConnectionPtr(基于DSN)
__ConnectionPtr MyDb;
MyDb.CreateInstance(__uuidof(Connection));
MyDb-〉Open("DSN=samp;UID=admin;PWD=admin","","",-1);
//使用—ConnectionPtr (基于非DSN)
__ConnectionPtr MyDb;
MyDb.CreateInstance(__uuidof(Connection)); MyDb.Open("Provider =SQLOLEDB;SERVER=server;DATABASE=samp;
UID=admin;PWD=admin","", "",-1);
使用ADO對(duì)象開發(fā)應(yīng)用程序也類似其他技術(shù),需產(chǎn)生與數(shù)據(jù)源的連接,創(chuàng)建記錄等步驟,但與其他訪問(wèn)技術(shù)不同的是,ADO技術(shù)對(duì)對(duì)象之間的層次和順序關(guān)系要求不是太嚴(yán)格。在程序開發(fā)過(guò)程中,不必先建立連接,然后才能產(chǎn)生記錄對(duì)象??梢栽谑褂糜涗浀牡胤街苯邮褂糜涗泴?duì)象,在創(chuàng)建記錄對(duì)象的同時(shí),程序自動(dòng)建立了與數(shù)據(jù)源的連接。這種模型有力地簡(jiǎn)化了程序設(shè)計(jì),增強(qiáng)了程序的靈活性。下面講述使用ADO對(duì)象進(jìn)行程序設(shè)計(jì)的方法。
(1)引入ADO庫(kù)文件
使用ADO前必須在工程的stdafx.h文件里用直接引入符號(hào)#import引入ADO庫(kù)文件,以使編譯器能正確編譯。代碼如下所示:
#define INITGUID
#import "c:\program files\common files\system\ado\msado15. dll"
no_namespace rename("EOF"," EndOfFile")
#include "icrsint.h"
這行語(yǔ)句聲明在工程中使用ADO,但不使用ADO的名字空間,并且為了避免沖突,將EOF改名為EndOfFile。
(2)初始化ADO環(huán)境
在使用ADO對(duì)象之前必須先初始化COM環(huán)境,初始化COM環(huán)境可以用以下代碼完成:
::CoInitialize(NULL);
在初始化COM環(huán)境后,就可以使用ADO對(duì)象了,如果在程序前面沒有添加此代碼,將會(huì)產(chǎn)生COM錯(cuò)誤。
在使用完ADO對(duì)象后,需要用以下的代碼將初始化的對(duì)象釋放:
::CoUninitialize();
此函數(shù)清除了為ADO對(duì)象準(zhǔn)備的COM環(huán)境。
(3)使用ADO訪問(wèn)數(shù)據(jù)庫(kù)
__ConnectionPtr是一個(gè)連接接口,首先創(chuàng)建一個(gè)__ConnectionPtr接口實(shí)例,接著指向并打開一個(gè)ODBC數(shù)據(jù)源或OLE DB數(shù)據(jù)提供者(Provider)。以下代碼分別創(chuàng)建一個(gè)基于DSN和非DSN的數(shù)據(jù)連接。
//使用__ConnectionPtr(基于DSN)
__ConnectionPtr MyDb;
MyDb.CreateInstance(__uuidof(Connection));
MyDb-〉Open("DSN=samp;UID=admin;PWD=admin","","",-1);
//使用—ConnectionPtr (基于非DSN)
__ConnectionPtr MyDb;
MyDb.CreateInstance(__uuidof(Connection)); MyDb.Open("Provider =SQLOLEDB;SERVER=server;DATABASE=samp;
UID=admin;PWD=admin","", "",-1);

