利用ADO技術操作access數據庫的方法

利用ADO技術操作access數據庫的方法

首先我們來介紹下ADO對象:

1、Access內嵌的VBA是用ADO技術開發數據庫應用的主要工具,ADO是目前Microsoft通用的數據訪問技術;

2、?ADO對象模型包括:Connection、Recordset、Record、Command、Parameter、Field、Property、Stream、Error九個對象;

相關推薦:access數據庫教程

3、主要的ADO對象介紹:

1)Connection對象:ADO對象模型中的最高級對象,用來實現應用程序與數據源的連接;

2)Command對象:主要在VBA中使用SQL語句訪問、查詢和修改數據庫中的數據,實現Recordset對象無法實現的操作(數據表級別的操作),可以使用DoCmd代替;

3)Recordset對象:ADO最為常用的、重要的對象,可以訪問表和查詢對象,返回的記錄儲存在Recorderset對象中,主要執行的操作:

? ? ?①查詢數據表中的數據;

? ? ?②在數據表中添加數據;

? ? ?③更新數據表中的數據;

? ? ?④刪除數據表中的特定數據;

在Access中引用ADO對象

1、Access引用ADO的步驟:

?????①聲明、初始化Connection對象;

?????②創建Recordset對象,編程完成各種操作;

? ? ?③關閉ADO對象;

2、聲明、初始化Connection對象

‘聲明Connection對象:一般使用cn做為變量的命名前綴;

Dim?coName?As?ADODB.Connection

‘初始化Connection對象,連接當前數據庫;

Set?cnName?=?CurrentProject.Connection

3、聲明和打開Recordset對象

1)聲明、初始化Recordset對象

Dim?rsName?As?ADODB.Recoreset set?rsName?=?new?ADODB.Recordset

2)打開一個Recordset對象

使用Recordset的Open方法可以打開數據表、查詢對象、或直接引用SQL查詢語句

rsName.Open?source,?ActiveConnection,?CursorType,LockType,Option

利用ADO技術操作access數據庫的方法

4、關閉Recordset和Connection對象

rsName.Close cnName.Close Set?rsName?=?Nothing Set?cnName?=?Nothing

通過Recordset對象引用記錄字段

1、引用字段的方法有2種:直接在記錄集對象中引用字段名稱;使用記錄集對象的Fields(n)屬性引用;

Code?=?rsName!字段名

‘引用該字段的第一條記錄

Code?=?rsName?.Field(n)

‘引用該字段的第n條記錄,n從0開始,可以用循環輸出需要量的記錄

2、如果記錄集字段包含空格、或者是一個保留字,則引用時必須將該字段用?[ ?]?括起來;

通過Recordset對象瀏覽記錄

1.Recordset記錄集對象提供了4種方法瀏覽記錄

利用ADO技術操作access數據庫的方法

2、?BOF、EOF屬性分別記錄指針是否在文件開始、文件末尾;

如果記錄集指針指向某記錄時,BOF和EOF都為false;

‘添加一個窗體部件的按鈕事件:瀏覽下一條記錄

Priavte?Sub?ComomndNext_Click() ?????rsDemo.MoveNext ?????If?rsDemo。EOF?Then ??????????rsDemo.MoveFirst ?????End?If End?Sub

3、Recordset對象的LockType屬性默認為adLockReadOnly(只讀)

利用ADO技術操作access數據庫的方法

通過Recordset對象編輯數據

1、用AddNew方法添加記錄

1)調用記錄集AddNew方法,產生一個空記錄

2)為空記錄的各個字段賦值;

3)用記錄集Update方法更新保持新記錄;

‘添加記錄按鈕事件,假設rsDemo記錄集有字段Id(int),Name(String),Age(int)

Private?Sub?CommandAdd_Click() ?????rsDemo.MoveLast??'記錄集指針移動到記錄集最后 ?????rsDemo.AddNew??'添加一條新紀錄??? ?????rsDemo?!?Id?=?"123" ?????rsDemo?!?Name?=?"assad" ?????rsDemo?!?Age?=?"18"? ?????rsDemo.Update End?Sub

2、用Update方法修改記錄

1)尋找并將記錄集指針移動到需要修改的記錄上;

2)對記錄中的各個字段的值進行修改;

3)用記錄集Update方法更新保持新記錄;

‘修改記錄集中Age字段所有值+1;

Private?Sub?UpdateAge()? ?????rsDemo.MoveFirst ?????Do ??????????Dim?Code?as?Integer ??????????Code?=?rsDemo?!?Age? ??????????rsDemo?!?Age?=?Code?+1 ?????Loop?Until?rsDemo.EOF ?????rsDemo.Update End?Sub

3、用Delete方法刪除記錄

1)將記錄集指針移動到需要刪除的記錄上;

2)使用Delete方法刪除當前記錄;

3)將某條記錄指定為當前記錄

'刪除rsDemo數據集中Age?=?"18"?的記錄 Private?Sub?DeleteAge(Dim?deleteAge?as?Integer) ?????rsDemo.MoveFirst ?????Do ??????????IF?rsDemo?!?Age?==?deleteAge?Then ???????????????rsDemo。Delete ???????????????rsDemo。MoveNext ??????????End?IF ?????Loop?Until?rsDemo.EOF End?Sub

注:?一條記錄被刪除后,Access不會自動是下一條記錄成為當前記錄,這時要用MoveNext方法將記錄集指針定位到最后一條記錄中;

通過Command/DoCmd對象使用SQL命令

Access提供了DoCmd對象,其RunSOL方法可以在VBA中使用SQL命令;

DoCmd.RunSQL?"SQL命令"

or:

?????Dim?s?AS?String ?????s?=?"SQL命令" ?????DoCmd.RunSQL?s

1、定義數據

1)創建數據表

?格式:?Create Table 表名 (字段名 數據類型…..)

?如:DoCmd.RunSQL “Create Table 研究生(姓名 text(6),年齡 byte,入學日期 date)”

2)增加字段

?格式:?Alter Table 表名 Add 字段名 數據類型

?如:DoCmd.RunSQL “Alter Table student Add 學費 currency”

3)改變字段類型

?格式:?Alter Table 表名 Alter 字段名 新數據類型

?如:DoCmd.RunSQL “Alter Table student Alter 年齡? integer”

4)改變字段寬度

?格式:?Alter Table 表名 Alter 字段名 新寬度

?如:DoCmd.RunSQL “Alter Table studnt Alter 姓名 text(6)”?

5)刪除一個字段

?格式:?Alter 表名 Drop?字段名

?如: DoCmd.RunSQL “Alter student Drop 年齡”

6)刪除一個數據表

?格式:?Drop Table 表名

?如:DoCmd.RunSQL “Drop Table student”

7)修改數據表名字

?格式:?DoCmd.rename “新表名”, acTable, “舊表名”

?如:DoCmd.rename “學生”, acTable, “student”

2、編輯數據

1)向表中追加數據

?格式:?Insert into 表名 Values(記錄…..)

注:?字符串型數據用 ‘ ? ’, 日期型型數據可以 ‘ ? ?’,或 # ?#;

?如:DoCmd.RunSQL “Insert into student Values(‘李達’,35,’2003-1-15′) “

? 或:

Dim?name?As?String Dim?age?As?Byte,?dates?As?Date????????? name?=?InputBox("輸入學生姓名")????????? dates?=?InputBox("輸入入學日期")?????????? ages?=?17?????????? DoCmd.RunSQL?"Insert?into?student?Values?('"?&?name?&?"',"?&?age?&?",'"?&?dates?&?"')"

2)修改表中記錄

?格式:?Update 表名 set 字段=數值 ?Where 限定條件

?如:DoCmd.RunSQL “Update student set 年齡=20 Where 姓名=’李達'”

3)刪除待定記錄

?格式:?Delete from 表名?where 限定條件

?如: DoCmd.RunSQL “Delete from student where 姓名=’李達'”?

3、實現數據完整性約束

1)設置主鍵

?格式:?Alter Table 表名 Add Primary Key (字段名)

?如:DoCmd.RunSQL “Alter Table 導師 Add Primary Key (導師編號)”

2)設置外鍵

?格式:?Alter Table 主表名 Add Foreign Key (字段名) References 從表名

?如:DoCmd.RunSQL “Alter Table 研究生 Add Foreign Key (導師編號) References 導師”

4、執行查詢操作

VBA程序中可以用SQL命令完成數據查詢操作,但是無法直接將查詢結果所返回的記錄集按數據表的形式顯示,解決方法有:

1)將查詢結果的返回記錄集生成一個新表保存在數據庫中,然后用ADO記錄集對象對這個表進行各種操作,完成后再刪除這個表;

Docmd.runSQL?"Select?姓名,職稱,年齡??Into?temp?From?導師?Where?職稱?in('教授','副教授')"

操作…..

???rsTeacher.Close ???Docmd.runSQL?"Drop?Table?temp"

2)將返回的記錄集看成保存在內存中的一個臨時表,用ADO記錄集對象直接打開該查詢指令;

訪問當前數據庫以外的數據庫

1、Access提供了Connection.Open方法以連接另一個數據庫

2、格式:?Connection對象.Open “Provider=提供者;Date Source=數據庫名;User ID=用戶;PassWord=密碼”

3、其中提供者為?Microsoft.Jet.OLEDDB.4.0;數據庫名包括?數據庫所在的路徑(包括.mdb文件名)。

以上就是利用ADO技術操作

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享