大家好,我们今天讲解VBA与数据库解决方案第8讲:从创建一个ADO连接,到打开记录集的过程回顾。我们的数据库讲解到本讲,一些基本的概念,以及需要了解的一些基本知识就讲的差不多了,将逐渐过渡到以实际问题的解决为侧重点了。今天我们将之前讲解的内容再大概的回顾一下。
一 数据库的知识点
我们首先讲了数据库,务必要理解的是关系数据库中的关系是指什么。所谓的关系就是表,就是数据库中的表格,那么所谓的关系数据库就是由表格组成的数据库。
二 创建ADO对象
我们讲连接数据库的各种连接方式中,主要讲了ADO的连接方式,这种方式是比较年轻的连接方式,所谓的ADO就是ActiveX Data Objects,对于这个词的解释不必过多的追求,只要知道只是一组数据对象即可。在连接数据库的时候,给出了两种方式的ADO连接。
第一种办法是前期绑定,即引用"Microsoft ActiveX Data Objects 2.x Library"找到其中数字尽可能高一点的版本,创建连接的代码语句如下
Dim cnADO As ADODB.Connection '声明一个ADO对象
Set cnADO = New ADODB.Connection '创建一个ADO对象
或者在声明是直接创建,代码写为:
Dim cnADO As New ADODB.Connection
第二种办法:直接的创建,即后期的绑定:代码如下
Dim cnADO As Object'声明一个ADO对象
Set cnADO = CreateObject("ADODB.Connection")'创建一个ADO对象
三:有了ADO对象后要进行的是连接到数据库:
我之前的代码中有两种连接方式:
第一种: strPath = T & "\myda;
cnADO.Open "Provider=Micro;Data Source=" & strPath
第二种:
With cnADO
.Provider = "Micro"
.Open strPath
End With
两者写法不一样,其实内容是一样的,就是设置Connection对象的Provider和ConnectionString的两个属性。
四 SQL语句及记录集:
下一个步骤是记录集的操作,这里我们讲了SQL即结构化查询语句,如Sql = "Select 班级,姓名 From [高三年级]"上面Sql语句的意思是从"高三年级"表中查询(提取)所有记录的班级和姓名两个字段。
在打开记录集时同样也有两种方法可以利用;
第一种方法:使用Connection对象的Execute方法
示例1: Set rst = cnADO.Execute(Sql) 执行查询,并将结果保存到rst对象中。
示例2 :Execute 方法
语法:connec CommandText, RecordsAffected, Options
返回: Recordset 对象引用。
参数:
①CommandText 字符串,通常为要执行的 SQL 语句、表名。
②RecordsAffected 可选,长整型变量,提供者向其返回操作所影响的记录数目。
③ Options 可选,长整型值,指示提供者应如何计算 CommandText 参数。
后面两个可选参数我们一般用不到去设置。使用Connection对象的Execute方法返回的结果集,始终为只读、仅向前的游标。也无法取得返回结果集合中的记录数。一般在只需将结果一次性写入工作表中(CopyFromRecordset)时使用,它的好处是写法简洁。如果需要处理返回结果的更多操作,应使用下面的方法。
第二种方法:使用Recordset对象的Open方法
示例1:r Sql, cnn 同前面的Set rst = cnn.Execute(Sql)一样。
示例2 Open 方法
语法 :record Source, ActiveConnection, CursorType, LockType, Options
参数:
①:Source 可选,变体型,通常为SQL 语句、表名。
②:ActiveConnection 可选。变体型,一般为有效 Connection 对象变量名。
③:CursorType 可选,CursorTypeEnum 值,打开 Recordset 时使用游标类型。
④ LockType 可选。打开 Recordset 时使用的锁定(并发)类型。
⑤:Options 可选,长整型值,用于指示提供者如何计算 Source 参数。
其中参数③游标是可以指定的类型有四种:
0 AdOpenForwardOnly 默认值)打开仅向前类型游标。
1 AdOpenKeyset 打开键集类型游标。
2 AdOpenDynamic 打开动态类型游标。
3 AdOpenStatic 打开静态类型游标。
如果需要计算返回记录集的记录数(RecordCount),需要将游标指定为adOpenStatic或adOpenKeyset类型,如果需要对游标进行更新,则需要指定为adOpenKeyset或AdOpenDynamic类型。
其中参数④LockType可以选的类型如下:
1 AdLockReadOnly (默认值)只读 — 不能改变数据。
2 AdLockPessimistic 保守式锁定,提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。
3 AdLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。
4 AdLockBatchOptimistic 开放式批更新—用于批更新模式(与立即更新模式相对)。
到此,我们就把VBA、数据库、ACCESS、ADO、SQL等一些重要的词语概念连接到一起了。
今日内容回向:
1 从数据库到打开记录集的各个步骤是否清楚了呢?
2 如何打开一个SQL记录集?