ADO 資料庫開發技術一些小知識

2021-06-22 14:56:27 字數 4381 閱讀 9395

一、ado模型常用三個物件

連線物件connection 

通過連線可以從應用程式中訪問資料來源。連線時必須指定要連線的資料來源以及連線所

使用的使用者名稱和使用者口令。 

命令物件command 

可以通過已建立的連線發出命令,從而對資料來源進行指定操作。一般情況下,命令可

以在資料來源中新增、修改或刪除資料,也可以檢索資料。 

記錄集物件recordset 

查詢命令可以將查詢結果儲存在本地,這些資料以行為單位,返回資料的集合被稱為

記錄集 

ado 模型中常用的物件為connection 物件、command 物件、recordset 物件。在使用

這 3 個物件的時候,需要定義與之對應的 3 個智慧型指標,分別為_connectionptr  、

_commandptr 和_recordsetptr。然後呼叫它們的createinstance 方法例項化,從而建立這3

個物件的例項。

二、_bstr_t  和 _variant_t 類 

在利用ado 進行資料庫開發的時候,_bstr_t 和_variant_t 類很有用,省去了許多bstr

和variant 型別轉換的麻煩。 

com 程式設計不使用cstring 類,因為com 必須設計成跨平台,它需要一種更普遍的方

法來處理字串和其他資料型別,這也是 variant 變數資料型別的來歷。

bstr 型別也是如此,用來處理com 中的字串。

variant 是乙個巨大的union 聯合體,幾乎包含了所有的資料型別,簡單來說,_variant_t 是乙個類,封裝了variant 的資料型別,並允許

進行強制型別轉換。同樣,_bstr_t 是對bstr 進行了封裝的類

有了這兩個類,開發ado程式將得到很大的方便。在後面的例子中,將介紹它們的使用方法。

三、 1。當初始化 com 環境後,就可以建立與資料庫的連線。建立資料庫的連線需要使用連線物件connection。

2。利用 ado 查詢資料庫的記錄,需要使用記錄集物件 recordset。首先定義乙個_recordsetptr 型別的指標

3。利用open 方法開啟記錄集之後,就可以遍歷開啟的記錄集和獲取記錄集中的字段值。

遍歷記錄的時候,利用adoeof( )函式判斷記錄集是否到達末尾,如果沒有,可以繼續訪問

記錄集,否則退出while 迴圈。

4。ado 技術提供了三種新增記錄的方法,一是使用連線物件的execute 方法,二是使用

命令物件的execute 方法,三是使用記錄集物件的addnew 方法。 

5。與新增記錄一樣,既可以使用連線物件的execute 方法,也可以使用命令物件的execute

方法,還可以使用記錄集物件進行操作來修改記錄,下面重點介紹使用記錄集物件修改記

錄的方法和步驟。 

首先開啟記錄集,然後修改記錄集中的相應的字段值,最後呼叫update 方法,將修改

後的資料更新到資料庫中。 

6。與資料庫建立連線成功後,需要對資料庫進行操作,比如,新增記錄、更新記錄、刪除記錄、查詢記錄,

可以用連線物件connection 的指標進行操作~但是更方便的是用記錄集recordset的指標m_precordset,推薦用m_precordset對資料庫進行操作~~

(因為記錄集物件本身就是用來和資料表中的各條記錄打交道的,所以用記錄集運算元據表更方便)

四、常用ado程式設計函式

1.建立三個常用物件的函式createinstance,eg:

m_pconnection.createinstance(__uuidof(connection))

m_precordset.createinstance(__uuidof(recordset))

2.連線物件中與資料庫建立連線的open函式,

hr = m_pconnection->open("provider=sqloledb.1;\

integrated security=sspi;\

initial catalog=test1;\

persist security info=false;\

data source=(local)","","",admodeunknown);

3.開啟資料庫(讀取記錄)的open函式,

m_precordset->open("select * from mytable", m_pconnection.getinte***ceptr(), adopendynamic, adlockoptimistic, adcmdunknown);

4.開啟資料記錄(執行sql語句,同上面的3)的execute函式,

_bstr_t strcmd="select * from [user]";

m_precordset=m_pconnection->execute(strcmd,&recordsaffected,adcmdtext)

5.利用m_precordset,可以對資料庫進行很多操作~~

(1)if(!m_precordset->bof)

m_precordset->movefirst();   // 判斷資料表是否為空~~

(2)m_precordset->movefirst()可以將指標移動到第一條記錄

(3)m_precordset->movenext()可以將指標往下移動一項

(4)m_precordset->moveprevious()可以將指標往前移動一項

(5)while (!m_precordset->adoeof) 可以一直讀取記錄,直到最後一條記錄

(6)m_precordset->getcollect("name") 獲取某一條記錄中,屬性為"name"這一列的資料(即,某個人的姓名)

(7)m_precordset->addnew()該函式是讓資料表新增一新行,只有新增完新行支行,再呼叫putcollect()才能把資料寫入

(8)m_precordset->putcollect("name",_bstr_t(m_name)) 和第(6)條剛好相反,這裡是從編輯框中獲取資料,然後寫入到資料表某一列中

(9)m_precordset->update() 寫入資料之後,要更新一下

(10)m_precordset->movelast() 移動到資料表中最後一條記錄

(11)m_precordset->close() 關閉記錄集

(12)m_precordset->move(cursel) 將記錄集移動到游標所指的位置

五、增刪改查常用函式

1.查詢的時候用到 getcollect 函式,

2.增加記錄的時候 用 addnew() putcollect()  update()

m_precordset->addnew();                         //用這種方法新增資料就必須用open 語句執行sql語句

m_precordset->putcollect("name", _variant_t(m_name));

m_precordset->putcollect("age", atol(m_age));

m_precordset->update();

m_precordset->close();

3.修改記錄的時候用move() putcollect() update()

m_precordset->move(cursel);

m_precordset->putcollect("name", _variant_t(m_name));

m_precordset->putcollect("age", atol(m_age));

m_precordset->update();

4.刪除記錄的時候用move()  delete()  update()

m_precordset->movefirst();

m_precordset->move(cursel);

m_precordset->delete(adaffectcurrent);             //引數adaffectcurrent為刪除當前記錄

m_precordset->update();

m_precordset->close();

六、幾個函式用法的區別

m_precordset->open("操作字串"……)  這個可以開啟可編輯的記錄集,即,增刪改查都可以用。

m_pconnection->execute("操作字串"……) 是唯讀的記錄集,即只能執行查詢操作~~函式的返回值

就是唯讀的_recordsetptr

m_pconnection->open("操作字串"……) 這個開啟資料庫連線,所有的資料庫操作都是建立在資料庫連線上的

ADO資料庫開發技術

ado的底層是ole db,所以不僅能訪問關係型資料庫,也能訪問非關係型資料庫,更是現在最快速的資料庫訪問中間層。1.ado主要物件介紹 ado物件包括 connection object 連線物件 command object 命令物件 recordset object 記錄集物件 field o...

ado mysql 開發 ADO資料庫開發技術

ado的底層是ole db,所以不僅能訪問關係型資料庫,也能訪問非關係型資料庫,更是現在最快速的資料庫訪問中間層。1.ado主要物件介紹 ado物件包括 connection object 連線物件 command object 命令物件 recordset object 記錄集物件 field o...

ADO資料庫開發技術 續)

使用資料庫訪問控制項。ado控制項使用microsoft activex資料物件 ado 來快速建立資料繫結的控制項和資料提供者的連線。activex資料繫結控制項開發技術使用了兩種activex控制項,一種是資料控制項,另一種資料繫結控制項。資料控制項 負責資料庫的連線和記錄集的獲取。vc 提供了...