首頁  >  文章  >  專題  >  利用ADO技術操作access資料庫的方法

利用ADO技術操作access資料庫的方法

王林
王林轉載
2020-11-17 16:22:294103瀏覽

利用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物件利用ADO技術操作access資料庫的方法

使用Recordset的Open方法可以開啟資料表、查詢物件、或直接引用SQL查詢語句

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

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物件瀏覽記錄利用ADO技術操作access資料庫的方法

# 1.Recordset記錄集物件提供了4種方法瀏覽記錄

#2、 BOF、EOF屬性分別記錄指標是否在檔案開始、檔案結尾;

利用ADO技術操作access資料庫的方法

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

'新增一個窗體元件的按鈕事件:瀏覽下一筆記錄

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

3、Recordset物件的LockType屬性預設為adLockReadOnly(唯讀)

透過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技術操作access資料庫的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除