查询编辑数据的ADO技术

作者 : 蜗牛 本文共4079个字,预计阅读时间需要11分钟 发布时间: 2020-03-28 共262人阅读

一、引用ADO

  • ADO对象库Microsoft ActiveX Data Objects 2.x Library,这里的2.X为版本号。

二、什么是ADO

  • ADO是Active Data Objects的缩写,就是一个访问数据库中数据的编程接口。

三、ADO对象模型层次结构

  • ADO对象模型主要包括连接(Connection)、错误(Errors)、命令(Command)、参数(Parameters)、记录集(Recordset)和字段(Fields)等对象,各个对象都有自己集合。
  • 下面就是声明对象的常用语句:
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn=New ADODB.Connection
Set rs=New ADODB.Recordset

或者写成:

Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset

四、Connection对象

  • 代表打开的、与数据源的连接。每一个成功的连接都代表和数据源的一次会话,包括打开数据源到关闭与数据源的连接之间的所有操作。

五、声明与初始化Connection对象

Dim cnn As ADODB.Connection
Set cnn=New ADODB.Connection

或者写成:

Dim cnn As New ADODB.Connection

六、Connection对象的常用属性

  • (一)ConnectionString属性
    指用于建立到数据源的连接的信息。
    格式如下:

    cnn.ConnectionString="provider=microsoft.ace.oledb.12.0;data source=数据源"

    其中,provider=microsoft.ace.oledb.12.0为用于连接的提供者名称,“data source=数据源”表示指定的数据源,数据源必须是带路径的数据库(工作簿)名字。

  • (二)Provider属性
    用来指示Connection对象的提供者的名称。例如,对于Excel工作簿和Access数据库,它的属性值为microsoft.ace.oledb.12.0。

七、Connection对象的常用方法

  • (一)Open方法
    用于打开到数据源的连接,其语法如下:

    cnn.Open ConnectionString,UserID,Password,Options

    其中参数说明如下:

  • ConnectionString:可选参数,表示连接信息的字符串。
  • UserID:可选参数,字符串,包含建立连接时要使用的用户名称。
  • Password:可选参数,字符串,包含建立连接时要使用的密码。
  • Options:可选参数,确定应在建立连接之后(同步)还是在建立连接之前(异步)。默认值为adConnectUnspecified(值1),表示同步打开连接。
    实际上,这里的4个参数都可以用ConnectionString属性来设置。
  • (二)Close方法
    用于关闭打开的Connection对象,其语法如下:

    cnn.Close
  • (三)Execute方法
    用于执行指定的查询、SQL语句等,其返回值是一个Recordset对象。
    其语法格式如下:
    (1)对于不是以行返回的命令字符串的语法格式如下:

    cnn.Execute CommandText,RecordsAffected,Options

    (2)对于以行返回的命令字符串的语法格式如下:

    Set rs=cnn.Execute(CommandText,RecordsAffected,Options)

    其中参数说明如下:

  • CommandText:表示要执行SQL语句文本。
  • RecordsAffected:可选参数,指定提供者向其返回操作影响的记录数目。
  • Options:可选参数,指定提供者计算CommandText参数的方式。

八、利用ADO连接Access数据库和Excel工作簿的连接字符串

(1)Access(.accdb)数据库的连接字符串

cnn.ConnectionString="Provider=microsoft.ace.oledb.12.0;data source=带完整路径的Access数据库名"

(2)Excel工作簿(.xlsx)的连接字符串

cnn.ConnectionString="Provider=microsoft.ace.oledb.12.0;Extended Properties=Excel 12.0;Data source=带完整路径的工作簿名称字符串"

九、易读的ADO连接语句

(1)Access(.accdb)数据库

With cnn
.Provider="microsoft.ace.oledb.12.0"
.ConnectionString="Data source=带完整路径的Access数据库名"
.Open
End With

(2)Excel工作簿(.xlsx)的连接字符串

With cnn
.Provider="microsoft.ace.oledb.12.0"
.ConnectionString="Extended Properties=Excel 12.0;Data source=带完整路径的工作簿名称字符串"
.Open
End With

十、声明并初始化Recordset对象

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

或者直接使用下面的语句声明并初始化

Dim rs As New ADODB.Recordset

如果要进行多次查询,那么就需要使用第一种声明方法。如果仅做一次查询,则使用第二种声明方法即可。

十一、Recordset对象的常用属性

  • (一)RecordCount属性
    表示Recordset对象中记录数目。
    一般情况下,建议将Recordset对象的游标类型设置为键集游标(adOpenKeyset)。
  • (二)BOF属性和EOF属性
    BOF属性表示当前记录的位置在Recordset对象的第一个记录之前。
    EOF属性表示当前记录的位置在Recordset对象的最后一个记录之后。
    当记录指针指向某个记录时,BOF属性和EOF属性的值均为False,表示没有到达记录集的开始处和结束处。
    当记录指针到达记录集的开始处时,BOF属性值为True,而EOF属性值为False。
    当记录指针到达记录集的结束处时,EOF属性值为True,BOF属性值为False。
    如果BOF属性和EOF属性的值均为True,表示记录集中没有记录。
  • (三)Fields属性
    rs.Fields(0).Value表示引用记录集的第一个字段值。
    rs.Fields(0).Name表示记录集的第一个字段名称。
    当然,也可以直接使用字段名引用记录集的字段信息。例如:

    rs.Fields("客户名称").Name
    rs.Fields("客户名称").Value

十二、Recordset对象的常用方法

  • (一)Open方法
    用于打开一个Recordset对象。其语法如下:

    rs.Open Source,ActiveConnection,CursorType,LockType,Options

    下面的语句就是打开用户定义的记录集rs,数据源是SQL语句,ADO连接是cnn,使用键集游标adOpenKeyset,锁定类型为adLockOptimistic。

    rs.Open SQL,cnn,adOpenKeyset,adLockOptimistic

    当要取得表的全集,即所有行、所有列数据,可以直接用表名作为数据集来源。例如,下面的语句是查询Access数据库中的“资料表”的所有数据。

    rs.Open "资料表",cnn,adOpenKeyset,adLockOptimistic

    下面的语句是查询指定工作簿中的工作表Sheet1的所有数据。

    rs.Open "[sheet1$]",cnn,adOpenKeyset,adLockOptimistic
  • (二)Close方法
    rs.Close
  • (三)AddNew方法
    用于为数据表创建一条新记录。其语法如下:

    rs.AddNew FieldList,Values

    例如,下面的语句是为“合同信息”数据表增加一条新记录。

    With rs
    .AddNew
    .Fields("合同号")="YH031"
    .Fields("合同名称")="防霾项目"
    .Fields("供货单位")="北京口罩厂"
    .Fields("供货产品")="防霾口罩"
    .Fields("合同额")=100000
    .Fields("签订日期")=#3/14/2019#
    .Fields("交货日期")=#3/25/2019#
    .Update
    End With
  • (四)Update方法
    用于保存对Recordset对象的当前行或者Record对象的Fields集合所做的更改。语法如下:

    rs.Update
  • (五)Delete方法
    用于删除当前记录或记录组。其语法如下:

    rs.Delete AffectRecords

    其中,参数AffectRecords确定Delete方法影响的记录数目。
    需要注意的是,Delete方法支持数据库,但不支持Excel工作表。

  • (六)Move及其系列方法
    Move及其系列方法可以使指针相对于某一条记录移动,也就是做相对移动。其语法如下:

    rs.Move rows,start

    其中参数说明如下:
    rows:表示要相对移动的行数,如果为正值,表示向后移动,如果为负值,表示向前移动。
    start:指示从哪条记录开始相对移动。如果这项不给出,则从当前记录开始移动指针。一般情况下这项可以省略。
    其它系列方法语法如下:

    rs.MoveFirst '移动指针到表中第一条记录
    rs.MoveLast '移动指针到表中最后一条记录。
    rs.MoveNext '将指针移动到当前记录的下一条记录上,等于Recordset.Move 1。
    rs.MovePrevious '将指针移动到当前记录的上一条记录上,等于Recordset.Move -1。

十三、Fields集合的常用属性和方法

本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可
蜗牛办公 » 查询编辑数据的ADO技术

1 评论

发表评论

享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡