DAO讀寫ACCESS檔案

2021-04-25 14:16:44 字數 3313 閱讀 3296

我在網上想尋找乙個使用

cdao*

類來從資料表讀出或寫入資料資料,但是我沒有得到什麼線索。現在自己完成了這個功能,從乙個微軟的

access

檔案(.mdb

)檔案中快速、動態、簡便的建立/寫入

/讀出資料

。我們的例子是乙個基於對話方塊的程式。

設計我們的介面

為了建立我們的資料庫介面,首先我們應該在工程的

stdafx.h

檔案中加入

afxdao.h

的宣告。

我們將會用到兩個類

cdaodatabase

和cdaorecordset

,在程式中需要用到這兩個類的地方構造它們:

cdaodatabase database;

cdaorecordset recordset(&database);

建立我們的資料庫檔案

如果我們動態的建立乙個

access

檔案,我們不需要使用

cdaodatabase::open()

,因為create()

函式將自動的為我們開啟我們連線的資料庫:

cstring lpszfile = "c://database.mdb";

database.create(lpszfile);

開啟乙個已經存在的資料庫檔案

database.open(lpszfile);

很好,現在我們已經成功的連線到了乙個資料庫中,接下來我們可以向資料表中寫入資料了。這裡先介紹一些資料表的結構,這對你將來從事資料庫開發是有好處的。

乙個資料表是一系列的資料單。你可以在乙個資料庫檔案中使用多個資料表,每乙個資料表由行

(rows)

和列(columns)

組成。對應與乙個行和列的值叫做字段(

field

)。下面是乙個標準的資料表的圖示:

現在讓我們返回主題。我們首先需要在我們的資料庫檔案中建立乙個資料表。怎麼做呢

?我們通過建立乙個

sql執行字串來告訴我們的資料庫例項來執行它,例如

:cstring sqlcmd = "create table mytable

(name varchar(20),age varchar(3));";

database.execute(sqlcmd);

上面的sql

命令在我們的資料庫檔案中建立了乙個新的叫做

mytable

的資料表。它有兩列,乙個是

name

,一類是

age。

name

列的資料限制在

20個字元,

age列的資料限制在

3個字元。很簡單吧。

注意:在乙個檔案中不能建立同名資料表,除非你先通過使用正確的

sql字串呼叫

execute()

函式,刪除這個表。

在新的資料表中加入資料

用cdaorecordset

例項開啟我們的資料庫,當我們第一次建立它時,我們將有乙個

cdaodatabase

例項的指標,現在他們都被連線了。為了開啟我們的記錄並寫入資料,我們做下面的**:

recordset.open(afx_dao_use_default_type,

"select * from mytable", 0);

database.execute("insert into mytable(name);");

database.execute("insert into mytable(age);");

recordset.addnew();

recordset.setfieldvalue("name","chris");

recordset.setfieldvalue("age","13");

recordset.update();

recordset.movenext();

recordset.addnew();

recordset.setfieldvalue("name","joe");

recordset.setfieldvalue("age","20");

recordset.update();

下面我們來具體說明一下上面**的意義:

1.我們使用

sql命令

select * from mytable

開啟記錄例項。這意味著開啟函式將得到

mytable

資料表中的所有可以訪問的資料,不管是寫或是讀。

2.使用

sql字串呼叫

execute()

來在資料表中加入兩個新的列。

3.呼叫

addnew()

,允許我們加入乙個新的資料

4.兩次呼叫

setfieldvalue

,分別為同一行三上的兩列加入資料。

5.呼叫

update()

更新資料表的資料。

6.呼叫

movenext()

把記錄指標移向下乙個空行,再重複上面的加入資料的方法。

以上就是全部的向資料表中加入資料的方法,下面我們介紹如何從資料表中讀出資料。這部分也是相當簡單且容易理解的。

cdaorecordset::getfieldvalue()

函式有兩個引數,乙個是我們想得到資料的列的名稱,它與記錄指標的當前位置相對應,我們可以通過呼叫下面的函式自由的移動它:

::seek();

::movefirst();

::movenext();

::moveprev();

::movelast();

第二個引數是乙個

colevariant

例項,colevariant

是乙個基於

com的物件。我們的字段資料將被儲存在這個物件中,但是把這個儲存物件轉換到我們可以識別的

cstring

變數是我們所需要的,下面的**就是來完成這個工作:

colevariant olevar;

確認我們的

cdaorecordset

例項已經被開啟,我們呼叫

while(!recordset.iseof());

changetype()

方法把colevariant

例項轉換到

bstr

(一種晦澀的字串格式)。然後我們

pbstrvalue

方法把格式轉換為

cstring

,我們可以在任何需要的地方使用它。這些可以重複使用知道到達資料表中記錄的末尾。

相信以上的說明對你有所幫助。

直接通過DAO讀寫Access檔案

直接利用dao來建立 讀寫access檔案,總的說來,比直接通過odbc讀 寫excel檔案來講,要簡單一些。在下面的示例中,我們將用到兩種方法 sql和dao類函式來混合實現它們,這樣做的目地,我想可以使大家更加方便靈活的運用它們來完成你想要做的東西。在示例程式中預設指定建立資料庫名為 demo....

利用DAO來建立 讀寫Access檔案操作例項

下面讓我們來簡要看看它的實現步驟 1.首先,應確保包含進了afxdao.h標頭檔案,可以在stdafx.h檔案中包含它,如下 include 加入dao資料庫支援2.宣告dao庫及其記錄集變數,可在你的實現檔案中加入下面 cdaodatabase db 資料庫 cdaorecordset recse...

用DAO讀取access使用者表的資訊

下面演示了怎麼用dao讀某個資料庫裡面的所有使用者表的資訊 cstringarray tablename array cstringarray fieldname array cdaotabledefinfo table info 表的資訊 cdaodatabase db 在之前已經open資料庫 ...