資源描述:
《ado在vc++中的應(yīng)用》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、ADO在VC++中的應(yīng)用摘要介紹了ADO的特點以及在VC++中如何通過ADO開發(fā)數(shù)據(jù)庫應(yīng)用程序。ADO是開發(fā)訪問OLE數(shù)據(jù)庫應(yīng)用程序所使用的一種數(shù)據(jù)庫訪問組件,是一種可以訪問各種數(shù)據(jù)類型的連接機制。它不僅可以通過OLEDB、ODBC訪問數(shù)據(jù)庫,還可以使用幾乎任何一種數(shù)據(jù)源,如SQLServer、Oracle、Access、Excel和文本文件、圖形文件等。ADO基于OLEDB,提供統(tǒng)一的數(shù)據(jù)訪問接口,使用簡單,容易掌握。關(guān)鍵詞ADO;數(shù)據(jù)庫;應(yīng)用程序的開發(fā);VC++1引言ADO是Microsoft公司新的數(shù)據(jù)訪問技術(shù)
2、,由于它是基于OLEDB接口上實現(xiàn)的對象,其性能和易用性都達到了極佳水平。ADO并不與數(shù)據(jù)庫直接打交道,而是要通過ODBC驅(qū)動程序或OLEDB連接字符串來操作數(shù)據(jù)庫。ODBC或OLEDB是應(yīng)用程序與數(shù)據(jù)庫進行連接通信的接口,其作用是將特定類型數(shù)據(jù)庫中的數(shù)據(jù)變換為標準而能統(tǒng)一操作的數(shù)據(jù)源。利用ADO對象并通過ODBC或OLEDB,可以實現(xiàn)對任意數(shù)據(jù)庫的存取和訪問。ADO模型包括7個對象,主要對象有3個:Connection、mand和Recordset,可以被獨立創(chuàng)建和釋放。此外,還包括其他4個集合對象:Fields、
3、Errors、Parameters和Properties。一個典型的ADO應(yīng)用程序使用Connection對象建立與數(shù)據(jù)源的連接,然后用一個mand對象給出對數(shù)據(jù)庫操作的命令,如插入數(shù)據(jù)或者查詢數(shù)據(jù)等,而Recordset用于對結(jié)果集進行維護或者瀏覽等操作。其中mand命令所使用的語言與低層所對應(yīng)的OLEDB數(shù)據(jù)源有關(guān),不同的數(shù)據(jù)源可以使用不同的命令語言,對于關(guān)系數(shù)據(jù)庫,通常使用SQL作為命令語言。2VC++中使用ADO開發(fā)數(shù)據(jù)庫應(yīng)用程序一般步驟在VC++中使用ADO開發(fā)數(shù)據(jù)庫應(yīng)用程序一般包括以下步驟:(1)初始化庫
4、,引入ADO庫定義文件。(2)用Connection對象連接數(shù)據(jù)庫。(3)利用建立好的連接,通過Connection、mand對象執(zhí)行SQL命令,或利用Recordset對象取得結(jié)果記錄集進行處理、查詢。(4)使用完后關(guān)閉連接,釋放對象所占的資源。3ADO使用實例3.1引入ADO動態(tài)鏈接庫,初始化庫環(huán)境在使用VisualC++的MFC編程時,MFC并沒有提供對ADO的封裝類,能夠支持ADO編程的是ADO的動態(tài)鏈接庫文件msado*.dll,“*”位置的數(shù)字代表ADO庫的版本。引入該文件的方法是在stdafx.h頭文件
5、中,添加如下代碼:#import”c:programfilesmonfilessystemadomaado15.dll”o_namespacerename(“EOF”,”adoEOF”)這些命令聲明在工程中使用ADO,但不使用ADO的名字空間,并為了避免沖突,將EOF改名為adoEOF。ADO是基于技術(shù)的,所以,在應(yīng)用程序調(diào)用ADO前,必須初始化庫環(huán)境。ADO使用結(jié)束后需要關(guān)閉庫,釋放初始化加載的動態(tài)鏈接庫。::CoInitialize(NULL);//初始化庫::CoUninitialize();//
6、清除庫3.2創(chuàng)建ADO與數(shù)據(jù)庫的連接使用Connection對象打開連接,在引入的動態(tài)鏈接庫生成的定義文件(msado15.tlh)中Open方法的定義如下:HRESULTOpen(_bstr_tConnectionString,_bstr_tUserID,_bstr_tPass_pConnection;//連接對象智能指針//初始化數(shù)據(jù)庫連接HRESULThr;try{hr=m_pConnection.CreatEinstance(_uuidof(Connection));//實例化連接對象if(SUCCEEDED
7、(hr)){//設(shè)置連接串屬性為UDL文件m_pConnection->ConnectionString=”FileName=name.udl”;//設(shè)置等待連接打開的時間為20sm_pConnection->ConnectionTimeout=20;hr=m_pConnection->Open(””,””,””,adConnectUnspecified);if(FAILED(hr)){AfxMessageBox(“Openfail”);ReturnTRUE;}}else{AfxMessageBox
8、(“creatEInstanceofConnectionfail”);returnTRUE;}}catch(__errore){//給出異常信息_bstr_tbstrSource(e,Source());_bstr_tbstrDescription(e.Description());AfxMessageBox(bstrSource+bstrDe