學(xué)了很長一段時間的ADO.Net,知道其強(qiáng)大的數(shù)據(jù)訪問和操作能力!但是對ado.net的背景卻了解很少。。。 下面引用一下閱讀到得一些知識點(diǎn): ADO(ActiveX Data Object的簡稱)是Microsoft為最新和最強(qiáng)大的數(shù)據(jù)訪問范例OLE DB而設(shè)計(jì)的,是一個便于使用的應(yīng)用程序?qū)咏涌凇DO通過OLE DB提供訪問和操作數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)。ADO不僅可以訪問關(guān)系型數(shù)據(jù)庫,還可以訪問非關(guān)系型數(shù)據(jù)庫。同時由于OLE DB是基于COM接口的技術(shù),使用這種技術(shù)可以直接對數(shù)據(jù)庫的驅(qū)動程序進(jìn)行訪問,從而大大提供了訪問速度。與眾多的數(shù)據(jù)庫編程接口比較,ADO具有易于使 用、速度快、內(nèi)存支出少和磁盤遺跡小等優(yōu)點(diǎn)。 但由于Microsoft并沒有提供有關(guān)ADO的類,更不幸的是微軟所提供的ADO文檔幾乎沒有關(guān)于 Visual C++的內(nèi)容,這使得Visual C++程序開發(fā)人員要想利用ADO訪問數(shù)據(jù)庫相對比較麻煩。然而這又是每個Visual C++程序員不可回避的問題。解決這個問題的比較可行的辦法就是自己編寫這個類。本文將介紹如何具體編寫自己的ADO類。 (1) 在使用ADO前必須使用#import引入ADO庫文件,其中ADO庫文件的路徑視實(shí)際情況而定,同時為了避免常數(shù)沖突,通常將常數(shù)EOF改名為 adoEOF。
(2) 在使用ADO之前還必須初始化OLE庫。Visual C++ .net已經(jīng)在CWinApp::InitInstance()中對OLE庫進(jìn)行了初始化。但是如果使用的Visual C++ 6.0,則必須初始化OLE庫。
(3) ADO庫包含三個智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。_ConnectionPtr通常被用 來創(chuàng)建一個數(shù)據(jù)連接或執(zhí)行一條不返回任何結(jié)果的SQL語句。_CommandPtr返回一個記錄集,它提供了一種簡單的方法來執(zhí)行返回記錄集的存儲過程和 SQL語句。_RecordsetPtr是一個記錄集對象,它對記錄集提供了更多的控制功能,如記錄鎖定,游標(biāo)控制等。創(chuàng)建Connection對象和 Recordset對象方法如下:
(4) 連接不同數(shù)據(jù)庫。參數(shù)sConnection為連接屬性設(shè)置標(biāo)準(zhǔn)。它隨數(shù)據(jù)源類型的不同而變化。以下是其常見值: 1. 訪問ODBC數(shù)據(jù): "Provider=MSDASQL;DSN=dsnName;UID=userName;PWD=userPassword;" 2. 訪問ACCESS 97數(shù)據(jù)庫: "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=databaseName;User ID=userName;Password=userPassword;" 3. 訪問ACCESS 2000數(shù)據(jù)庫: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databaseName;User ID=userName;Password=userPassword;" 4. 訪問MS SQL數(shù)據(jù)庫: "Provider=SQLOLEDB;Data Source=serverName;Initial Catalog=databaseName;User ID=userName;Password=userPassword;" 5. 訪問ORACLE數(shù)據(jù)庫: "Provider=MSDAORA.1;Data Source=serverName;User ID=userName;Password=userPassword;"
(5) 查詢:
(6) 修改記錄: _variant_t vNULL; (7) 添加記錄: _variant_t vNULL; (8) 刪除記錄: _variant_t vNULL; (9) 統(tǒng)計(jì)。參數(shù)SqlCommand的形式如下: 1. 統(tǒng)計(jì)紀(jì)錄數(shù):SELECT COUNT(*) FROM TableName[ WHERE…] 2. 統(tǒng)計(jì)字段總和:SELECT SUM FieldName FROM TableName[ WHERE…] 3. 統(tǒng)計(jì)字段平均值:SELECT AVG FieldName FROM TableName[ WHERE…] 4. 統(tǒng)計(jì)字段最大值:SELECT MAX FieldName FROM TableName[ WHERE…] 5. 統(tǒng)計(jì)字段最小值:SELECT MIN FieldName FROM TableName[ WHERE…] inline _variant_t
Statistics(CString SqlCommand) |
|