ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 20595|回复: 51

[分享] ADO对象模型——学习小结

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-9-25 10:33 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ADO对象模型
ADO主要包含7个对象,3个独立对象和依赖独立对象才能使用的4个非独立对象。
1、Connection:连接对象,用于创建数据源连接。在使用其他对象之前必须先建立数据源连接,然后在连接对象上创建和使用其他对象。
2、Command:命令对象,用于执行动作查询,比如创建/删除数据库、执行返回数据集、删除记录等操作。
3、Recordset:记录集对象,保存来自基本表或命令对象返回的结果。使用记录集对象几乎可以完成所有的数据集操作。
4、Field:字段对象,依赖于记录集对象使用,可使用Fields集合获得记录集汇总每个字段的信息。
5、Property:属性对象,每个连接对象、命令对象、记录集对象以及字段对象都有一个属性对象集合。使用属性对象可以访问特定对象的主要信息,例如获得数据库中表的名称。
6、Parameter:参数对象,依赖于命令对象使用,用于为参数查询提供数据。同时使用参数对象和命令对象,可使数据库队查询进行预编译,从而提高执行速度。
7、Error:错误对象,依赖连接对象使用。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-25 10:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
使用Connection对象
Connection
对象主要用于创建数据库连接,任何数据库访问操作都建立在连接的基础上。
1、定义Connection对象
建立ADO引用后,就可定义(声明)Connection对象,然后利用Connection对象创建Recordset对象或Command对象。下面的语句定义并实例化一个Connection对象:
Dim objCn As Connection
Set objCn = New Connection
也可直接实例化Connection对象,例如:
Dim objCn As New Connection
2、指定数据提供者
实例化Connection对象后,就必须通过Provider属性指定一个数据提供者(可理解为驱动程序),例如:
   objCn.Provider=”SQLOLEDB”                  `指定数据提供者
   SQLOLEDB为Microsoft SQL Server OLE DB 数据提供者,用于访问SQL Server 数据库。Access为:Microsoft.jet.OLEDB.3.51或4.0
3、指定连接信息
要建立数据源连接,还必须通过Connection对象的ConnectionString(连接字符串)属性指定连接信息。不同类型提供者的连接字符串参数有所不同,SQL Server OLE DB提供者的连接字符串中主要包含下列参数:
Provider:提供者名称
User ID或UID:指定具有数据库访问权限的用户名。
Password或PWD:用户密码
Data Source 或 Server:SQL Server服务器名称。
Database:指定要访问的数据库名称。
Network  Address:要连接的服务器的IP地址,指定了该参数后可省略Server参数。
参数名称不区分大小写,也不区分在连接字符串中的先后顺序。连接字符串中使用“参数名=参数值”格式设置参数,参数之间使用分号(;)分隔各个参数。例如,下面的语句执行Connection 对象访问SQL Server数据库的链接字符串:
objCn.ConnectionString=”UID=sa;PWD=123;server=(local);database=CCNU”                                      
4、打开和关闭连接
指定了连接信息后,即可执行Connection对象的Open方法打开连接,例如:
objCn.open
完成数据库访问操作后,就应执行Connection对象的Close方法断开连接,例如:
objCn.close
连接断开后,可执行open方法重新打开。若连接断开后不在使用,应释放连接对象,例如:
Set objCn=Nothing

截图

截图

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-25 10:38 | 显示全部楼层
使用Command对象
Command对象用于执行各种SQL命令或存储过程。
1、常用属性
Command常用属性如下:
ActiveConnection属性:设置或返回对象使用的活动链接。
CommandText:设置或返回对象使用的SQL命令、存储过程名称或表名称。
CommandType:说明CommandText属性值为SQL命令(AdCmdText)、存储过程(AdCmdStoredProc)或表名称(AdCmdTable)。
State:用于查询命令当前所处状态,可以使连接、打开、关闭、正在执行或正在读取状态。
2、常用方法
Command对象的常用方法如下:
Cancel:撤销正在执行的命令
Createparameter:为执行参数的存储过程创建参数对象。
Execute:执行CommandText属性指定的命令。
3、从连接创建Command对象
可从一个已经打开的活动链接上创建Command对象,这种方式效率最高。下面的代码创建一个Connection对象和一个Command对象,并使用Command对象执行Update命令将“学生成绩”表中的所有成绩加上10分:
Dim objcn as connection, objcom as command, strcn$,strcom$
Set objcn=new connection
Objcn.provider=”SQLOLEDB”
Strcn=”uid=sa;pwd=123;server=(local);datebase=成绩管理”
Objcn.connectionstring=strcn
Objcn.open
Set objcom=new command
Set objcom.atciveconnection=objcn
Strcom=”update 学生成绩 set 成绩=成绩+10”
Objcom.commandtext=strcom
Objcom.commandtype=adcmdtext
Objcom.execute
4、创建独立的Command对象
在创建Command对象时,将连接信息直接设置为ActiveConnection属性即可。在执行Execute方法时,自动创建一个连接。这种方法创建的链接只能由当前Command对象使用,不能与其他对象共享。

[ 本帖最后由 gteng 于 2009-9-27 15:03 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-25 10:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
使用Recordset对象
Recordset对象用于保存执行查询获得的记录,并可将修改后的记录返回服务器。
1、Recordset常用属性如下:
Absoluteposition:返回当前记录在记录集中的序号
Activeconnection:设置或返回对象使用的活动链接
Bof:记录指针指向第一条记录之后时返回true,否则为false
Cursorlocation:设置或返回指针的位置
Cursortype:设置或返回指针类型
Eof:记录指针指向最后一条记录之后时返回值为true,否则为false
Filter:设置或返回记录加锁类型
Recordcount:返回记录集中记录数目
State:返回记录集的当前状态
2、记录集指针类型
3、使用Command对象创建Recordset对象
Command对象的execute方法可以返回记录集,下面的代码使用connection对象和command对象来创建记录集,获得“学生信息”表数据:
Dim objcn as connection,objcm as command, objrs as recordset
Set objcn=new connection
Set objcm=new command
Set objrs=new recordset
With objcn
.provider=”SQLOLEDB”
.connectionstring=”uid=sa;pwd=123;server=(local);database=成绩管理”
.open
End with

With objcm
.activeconnection=objcn
.commandtext=”select * from 学生信息”
.commandtype=adcmdtext
End with
Set objrs=objcm.execute


4、使用open方法打开recordset对象
   可直接执行recordset对象的open方法来打开记录集,例如;


Dim objcn as connection objrs as recordset
Set objcn=new connection,objrs=new recordset
With objcn
.provider=”SQLOLEDB”
.connectionstring=”uid=sa;pwd=123;server=(local);database=成绩管理”
.open
End with
With objrs
.activeconnection=objcn
.open “select * from 学生信息”
End with
5、使用connection对象的execute方法创建recordset对象
下面利用connection对象的execute方法创建recordset对象
Dim objcn as connection,objrs as recordset
Set objcn=new connection
Set objrs=new recordset
With objcn
.provider=”SQLOLEDB”
.connectionstring=”uid=sa;pwd=123;server=(local);database=成绩管理”
.open
End with
Set objrs=objcn.execute(“select * from 学生信息”)

6、创建独立的recordset对象
创建独立的recordset对象时,不需要先创建connection对象。
Dim objrs as recordset
Set objrs=new recordset
Objcn=”provider=SQLOLEDB;uid=sa;pwd=123;database=成绩管理;server=(local)”
Sql=”select * from 学生信息”
Objrs.open sql,objcn


7、创建断开连接的recordset对象


8、应用记录集中的字段
可直接引用字段名称或使用Fields集合来获取字段数据,前者的效率更高。下面的代码用多种方法来引用objrs记录集中每个记录的第2个字段,该字段名称为“姓名”:
Txtname=objrs!姓名
Txtname=objrs(“姓名”)
Txtname=objrs.fields(2).value
Txtname=objrs.fields(2)
Txtname=objrs.fields(“姓名”).value
Txtname=objrs.fields(“姓名”)

9、浏览记录集
在一个记录集中,只可能有一个记录成为当前记录,绝大多数记录集操作都是针对当前记录。Recordset对象提供了多个属性和方法来实现记录浏览,既切换当前记录。
Recordset对象与记录浏览相关的属性如下:
Pagesize:设置或返回记录集中每个记录页中包含的记录条数,默认为10
Pagecount:返回记录页个数。
Absolutepage:返回当前记录页序号
Bof:
Eof:
Bookmark:返回唯一标识当前记录的书签,或者将当前记录设置为书签标示的记录。

Recordset对象与记录浏览相关的方法如下:
Move n:使当前记录向前或向后第n条记录成为当前记录,n>0,向前;
Movefirst:
Movelast:
Movenext:
Moveprevious:

[ 本帖最后由 gteng 于 2009-9-27 15:05 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-25 10:41 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-9-25 19:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不懂什么是ADO,我真可悲

TA的精华主题

TA的得分主题

发表于 2009-9-26 19:21 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-27 15:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
实例非常多,基本上网上是个实例都会用到吧,但是很经典的倒是还不知道

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-28 14:58 | 显示全部楼层
这是我一个字一个字敲进去的呀~

TA的精华主题

TA的得分主题

发表于 2009-9-28 20:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢楼主分享,支持一下!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 22:20 , Processed in 0.039762 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表