VBA环境下的ADO编程方法 联系客服

发布时间 : 星期一 文章VBA环境下的ADO编程方法更新完毕开始阅读3e36548602d276a200292e09

ActiveX数据对象ADO是一种数据访问接口,可以与符合OLE DB标准的数据源通信,以检索、操作和更新数据。ADO的最大优点是易于使用,速度快,内存占用低,占用磁盘空间少等。一般而言,利用ADO进行数据访问和操作的主要步骤是: (1)连接数据源; (2)设置查询命令; (3)执行查询命令。

在典型情况下,需要在编程过程中按照步骤进行编程。但是,由于 ADO 有很强的灵活性,所以很多情况下只需执行部分模块就能完成需要的功能。

ADO对象库中主要有9个对象,即:Connection、Command、Recordset、Record、Field、Error、Property、Parameter和Stream。这9个对象中又有三个即Connection、Command、Recordset是最为常用的,很多情况下只需要这三个对象即可完成数据的读取和操作。

12.4.2 Connection对象

ADO Connection 对象代表了打开的、与数据源的连接,好像在应用程序和数据库中建立了一条数据传输连线,该对象代表了与数据源进行的惟一会话。如果是C/S数据库系统,该对象可等价于到服务器的实际网络连接。通过此连接,用户可以对被连接到的数据源进行访问和操作。

如果需要多次访问某个数据库,用户应当使用 Connection 对象来建立一个连接。如下例所示的就是在ASP语言中创建Connection对象并建立连接:

<%

Set Conn=Server.Createobject(\

Conn.Provider=\ Conn.Open \ Response.Write(Conn.Provider) Conn.Close %>

在上面的例子中使用了Connection对象的Provider属性和Open方法,关于Connection对象的更多属性和方法,请参阅帮助中心的ADO程序员参考。

Connection对象在C/S,B/S开发过程中是必备的ADO对象,但是在Access开发中,用户既可以自己定义Connection对象,也可以直接使用VBA中CurrentProject对象的Connection属性来实现连接,如下例所示: 自行定义Connection对象实现连接:

Dim Cnn as New ADODB.Connection

Dim Rst As New ADODB.Recordset '定义对象变量

Cnn.Open \\\ADO.Mdb\

Set Rst.Activeconnection = Cnn

使用Access VBA中CurrentProject对象的Connection属性实现连接:

Set rst = New ADODB.Recordset

rst.ActiveConnection = CurrentProject.Connection

12.4.3 Command对象:

ADO Command 对象用于执行面向数据库的一次简单查询。此查询可以是创建、添加、取回、删除或更新记录等动作。

如果该查询命令用于取回数据,则此数据将以Recordset 对象返回。这意味着被取回的数据能够利用Recordset对象的属性、集合、方法或事件进行操作。

在Command对象中,可以使用 CommandText 属性定义命令的可执行文本,通过 Parameter 对象和 Parameters 集合定义参数化查询或存储过程参数,可使用 Execute 方法执行命令并在适当的时候返回 Recordset 对象。

如果不想使用 Command 对象执行查询,可以将查询字符串传送给Connection 对象的 Execute 方法或 Recordset 对象的 Open 方法。但是,当需要使命令文本具有持久性并重新执行,或使用查询参数时,就使用 Command 对象了。 如下例所示的就是在ASP语言中创建Command对象并建立调用:

<%

Set Conn = Server.Createobject(\ Set Cmd = Server.Createobject(\

Conn.Open \Server.MapPath(\

cmd.ActiveConnection = Conn

'ActiveConnection属性使打开的连接与 Command 对象关联 cmd.CommandText = \

'CommandText 属性定义命令,可在ACCESS的查询表中建立查询表(表名亦即存储过程名称),或直接书写SQL语句

Set rs = cmd.Execute

'Execute 方法执行命令并在适当的时候返回 Recordset 对象 ...'应用rs,可输出记录 %>

在上面的例子中使用了Command对象的ActiveConnection属性和CommandText属性。

在Access开发中,用户定义使用Command对象,也可以直接使用更简单的Recordset对象的Open方法,来直接打开查询字符串,如下例所示:

Set rs = as New ADODB.Recordset '建立数据库对象

rs.activeconnection = CurrentProject.Connection '建立连接 rs.cursortype = adopendynamic rs.locktype = adlockoptimistic

rs.Open sql '按照设置的SQL查询方法,打开数据库对象

12.4.4 Recordset对象:

读者可以看到,在前面的两小节举例中,都用到了Recordset对象,那么什么是Recordset对象,为什么每个例子中都需要使用该对象呢?

在 ADO 中,Recordset对象是最重要且最常用于对数据库的数据进行操作的对象。ADO Recordset对象用于容纳来自数据库表的记录集。任何涉及数据的查询、修改、创建与删除操作,都需要创建该对象,并在该数据集中进行操作。

当用户首次打开一个 Recordset 对象时,当前记录指针将指向第一个记录,同时 BOF 和 EOF 属性为 False。如果没有记录,BOF 和 EOF 属性为 True。