Download presentation
Presentation is loading. Please wait.
Published byUtami Iskandar Modified 6年之前
1
教 师:曾晓东 电 话:13679007201 E_mail:zengxiaodong@263.net
数据库技术 教 师:曾晓东 电 话:
2
第15章 ADO与数据绑定控件 15.1 ADO数据控件 15.2 数据绑定控件 15.3 ADO对象
3
15.1 ADO数据控件 选择“工程”菜单下的“部件” 。 ADO数据控件是目前流行的数据访问控件,它支持OLE DB数据访问模型。
ADO数据控件是ActiveX控件,需要手工将其添加到工具箱中。 选择“工程”菜单下的“部件” 。
4
Adodc控件在窗体上的形式
5
ADO数据控件的主要属性 ConnectionString属性 CommandType属性 RecordSource属性
用于建立与数据源的连接 CommandType属性 指明命令的类型,共有四种 RecordSource属性 用于设置ADO结果集的内容 MaxRecords属性 决定结果集中的记录的最大数目 Recordset属性 用于存放从数据提供者那里获得的查询结果
6
ConnectionString属性 单击ADO数据控件属性页中的“ConnectionString”属性,然后单击 按钮
7
CommandType属性 adCmdUnknown:默认值。表示RecordSource中的命令类型未知。
adCmdTable:RecordSource属性的内容是一个表名。 adCmdText:RecordSource属性的内容是一个查询语句文本串。 adCmdStoredProc:RecordSource属性的内容是一个存储过程名。
8
RecordSource属性 用于设置ADO结果集的内容.
这个内容可以来自于一张表,也可以来自一个查询语句,也可以来自一个存储过程的执行结果。 RecordSource属性的值与CommandType属性的值有关,两者协同使用。
9
设置RecordSource属性 在已经设置好ConnectionString属性的ADO数据控件上右击鼠标,在弹出的菜单中选择“ADODC属性”命令,在弹出此对话框上选择“记录源”标签页。
10
MaxRecords属性 决定了结果集中的记录的最大数目。 这个属性取值大小取决于所检索的记录的大小以及计算机的可用资源(内存)的多少。
11
Recordset属性 是ADO数据控件中实现数据记录操作的最重要的属性,而且这个属性本身又是一个对象,也有自己的属性和方法,它直接指向ADO对象模型中的Recordset对象。 Recordset属性也称为记录集或结果集,用于存放从数据提供者那里获得的查询结果,这个结果一般存放在客户端内存中。
12
ADO数据控件的主要方法 Refresh ADO数据控件名.Refresh 用于更新ADO数据控件属性,使修改后的ADO数据控件属性生效。
当修改了ADO数据控件的ConnectionString属性的值时,使用Refresh方法会重新连接一次数据库; 当修改了ADO数据控件的RecordSource属性的值时,使用Refresh方法会重新执行RecordSource属性的内容,重新产生结果集。 使用Refresh方法的格式为: ADO数据控件名.Refresh
13
ADO数据控件的主要事件 EndOfRecordset事件 Error事件
当在结果集中移动记录指针时,当记录指针超出了结果集的最后一条记录时,触发此事件。 Error事件 只有在没有执行任何VB代码而发生了一个数据访问错误时,才会触发此事件。 WillChangeField和FieldChangeComplete事件 当对结果集中的一个或多个字段值进行修改前,触发WillChangeField事件;当对结果集中的一个或多个字段值修改之后,触发FieldChangeComplete事件。
14
ADO数据控件的主要事件(续) WillMove事件和MoveComplete事件
WillChangeRecord和RecordChangeComplete事件 当对结果集中的一个或多个记录进行修改前,触发WillChangeRecord事件;当对结果集中的一个或多个记录修改之后,触发RecordChangeComplete事件。 WillMove事件和MoveComplete事件 在结果集的当前行记录指针移动之前,触发WillMove事件;在结果集的当前行记录指针移动完成后,触发MoveComplete事件。
15
RecordSet对象的主要属性 BOF:布尔值,如果结果集中记录的当前行指针移到了第一条记录的前边,则此值为真,否则为假。
EOF:布尔值,如果结果集中记录的当前行指针移到了最后一条记录的后边,则此值为真,否则为假。 RecordCount:存放结果集中的记录个数。 Sort:将结果集中的记录按某个字段排序。
16
RecordSet对象的主要属性(续) AbsolutePosition:记录当前行记录在结果集中的顺序号,结果集记录序号从1开始。
ActiveCommand:结果集中创建的命令。 ActiveConnection:结果集中创建的连接。 Bookmark:结果集中当前行记录的标识号。 Fields:结果集中的字段集合。
17
Fields对象的主要属性 Fields.Name:字段名称。 Fields.Value:字段的值。
Fields.OrdinalPosition:字段在Fields集合中的顺序。 Fields.Type:字段的数据类型。 Fields.Size:字段的最大字节数。 Fields.SourceTable:字段来自的表 Fields.SourceField:字段来自的表中的列
18
示例 Fields(“字段名”).Value Fields(数字).Value
或: Fields(数字).Value
19
RecordSet对象的主要方法 1. Move方法组 MoveFirst方法:将当前行记录指针移到结果集中的第一行。
MovePrevious方法:将当前行记录指针向前移动一行。 MoveNext方法:将当前行记录指针向后移动一行。 MoveLast方法:将当前行记录指针移到结果集中的最后一行。
20
RecordSet对象的主要方法(续) 2.AddNew方法 3.Update方法 4.Delete方法 用于在结果集中添加一个新记录。
将新记录缓冲区中的记录或者对当前记录的修改真正写到数据库中。 4.Delete方法 删除结果集中当前行记录指针所指的记录,并且这个删除是直接对数据库数据操作的,删除后的数据不可恢复。
21
RecordSet对象的主要方法(续) 5.CancelUpdate方法 6. Find方法
用于取消新添加的记录或对当前记录所做的修改。 6. Find方法 用于在当前结果集中查找满足条件的记录。 Find方法的格式为: ADO数据控件名.Recordset. Find(“查找条件表达式”) 例: 查找年龄在20到25之间的学生: Find(“Sage >= 20 AND Sage <= 25”)
22
15.2 数据绑定控件 数据绑定实际上就是将结果集中的数据同应用程序界面上的控件联系起来,通过这些界面上的控件将结果集中的数据显示给用户。
能够实现将结果集中的数据显示出来的功能的控件就称为数据绑定控件。 标准绑定控件:TextBox、CheckBox、ListBox、ComboBox等 外部绑定控件:DataCombo、DataList、DataGrid、MSHFGrid、Microsoft Chart等
23
DataGrid控件 正式名称是:Microsoft DataGrid Control 6(OLE DB),
以表格的形式显示结果集中的全部数据, 并允许用户在此控件中浏览、添加、删除和修改记录。 需手工添加到工具箱中。
24
DataGrid控件的特殊属性 1.“通用”选项卡 列标头(ColumnHeaders属性):决定是否显示字段名。
允许添加(AllowAddNew属性):允许添加新记录。 允许删除(AllowDelete属性):允许删除记录。 允许更新(AllowUpdate属性):允许更改记录。 列标头(ColumnHeaders属性):决定是否显示字段名。 有效(Enabled属性):决定运行时能够对DataGrid控件进行操作,如移动数据区滚动条等。
25
DataGrid控件的特殊属性(续) 2. “键盘”选项卡
用于控制控件的浏览属性。“允许箭头”(AllowArrow属性,默认)使光标可以在列和行间移动。 如果选择了“自动换行单元指针”(WrapCellPointer属性)复选框,则可以用光标控制键或Tab键来移动光标,从当前记录的最后一列移到下个记录的第一列。 如果设置了“Tab动作键”(TabAction属性)为“2-dbgGridNavigation”,则可以使用Tab键浏览记录。
26
DataGrid控件的特殊属性(续) 3.“列”选项卡
提供了在设计模式下对DataGrid控件中列集合的控制,通过此页可以为每个列集合对象设置标题和DataGrid的属性值。 通常的做法是通过改变“标题”(Caption属性)使列的标题可读性更好。
27
DataGrid控件的特殊属性(续) 4. “布局”选项卡 用于设置附加的列属性,其最重要的特征是可以设置列的对齐方式和宽度。
“锁定”(Locked)复选框用于防止值被修改; 不选中“允许调整大小”(AllowSizing)复选框可以防止改变列的宽度; 不选中“可见”(Visible)复选框可以隐藏列; 选中“自动换行”(WrapText)复选框可以写多行文本; 选中“按钮”(Button)复选框可加入一个下拉式的按钮列表。
28
DataGrid控件的特殊属性(续) 5. “颜色”选项卡
用于设置列标题以及控件的其他部分的前景色和背景色,是从Visual Basic 6属性窗口中的前景色和背景色条目复制过来的。 6.“字体”选项卡 可以有选择的设置列标题以及DataGrid控件体的字体、大小及属性。
29
DataGrid控件的特殊属性(续) 7.“拆分”选项卡 用于把DataGrid中的一列分割成多列,以方便对列中的数据进行滚动查看。
8.“格式”选项卡 可以指定每个独立列的数据类型,如把记录价格的列指定为“货币”类型,对文本列采用默认的“通用”类型,对数字列指定为“数字” 类型,并指明相应的小数位数,等等。
30
DataGrid控件的特殊属性、方法和事件
使用HeadClick事件对列进行排序 例:对单击的列进行降序排序。 Private Sub DtgStudent_HeadClick(ByVal ColIndex As Integer) With Adodc1.Recordset .Sort = .Fields(ColIndex).Name & " DESC" End With DtgStudent.Refresh End Sub
31
DataGrid控件的特殊属性、方法和事件(续)
在运行模式下改变显示的列 通过操作DataGrid控件的列集合,可以在运行模式下隐藏部分列。 隐藏列的最简单的方法是设置列的Visible属性为False。
32
隐藏列示例 Private Sub CmdSomeColumns_Click() '隐藏Ssex和Sage列 With DtgStudent
.Columns(2).Visible = False ‘Ssex列 .Columns(3).Visible = False ‘Sage列 End With CmdSomeColumns.Enabled = False ‘显示部分列按钮 CmdAllColumns.Enabled = True ‘显示全部列按钮 End Sub
33
用DataGrid事件确认更新 事件 触发时刻 BeforeColEdit 移入新单元后,但在单元中敲入第一个字符之前 ColEdit
在单元中敲入第一字符后 AfterColEdit 紧随AfterColUpdate事件之后 BeforeColUpdate 改变单元值或移入一个新单元之后,但在DataGrid缓冲区内容改变之前 AfterColUpdate 在为更新的列修改缓冲区之后(同AfterColEdit) BeforeDelete 在选中一行并按Delete键之后,但在列从Recordset中删除之前 AfterDelete 从Recordset删除一行之后 BeforeInsert 在临时加入的记录组成的列中敲入至少一个字符之后,但在行被加入到Recordset之前 AfterInsert 在行加入到Recordset之后 BeforeUpdate 在修改任何列的值或移动一个新记录之后,但在Recordset更新之前 AfterUpdate 在更新Recordset的行之后
34
DataList和DataCombo控件
功能与ListBox与ComboBox类似。 需要手工添加到VB工具箱中 。 DataList控件主要属性 属性 描述 DataSource 指定ADO数据控件的名称。 BoundColumn 指定DataSource和RowSouce数据源中有关联关系的字段名称。 RowSource 指定ADO数据控件的名称,该控件提供了可能的值的列表。 DataField 指定来自DataSource数据源中的字段名称。 ListField 指定来自RowSouce数据源、将被显示在DataList列表中的字段的名称。
35
应用示例 对象名 属性名 属性值 AdoSC ConnectionString 连接到Access上的“学生管理数据库”
CommandType adCmdTable RecordSource SC AdoStudent Student DataGrid1 DataSource DataList1 RowSource DataField Sno ListField Sname BoundColumn
36
运行结果
37
15.3 ADO对象 由一组相互独立的对象组成,对象模型中的每个对象都具有各自的属性、方法和事件,
通过设置和使用这些对象的属性、方法和事件可以实现对数据库的全部操作。
38
ADO对象模型 Connection Error Command Recordset Errors Parameter Parameters
Field Fields
39
15.3.1 Connection对象 表示一个OLE DB数据源的开放式连接。 是ADO对象模型的基础。
在使用ADO对象模型编程之前,必须先引用ADO对象模型。方法为:在VB的“工程”菜单下选择“引用”命令,然后在打开的窗口中选择“Microsoft ActiveX Data Objects 2.× Library”选项(其中“×”代表机器上所安装的版本号)。
40
Connection对象的主要属性 ConnectionString 用于指定连接到的数据源名称,使用方法及含义同ADO数据控件。
Provider 连接中使用的OLE DB提供者。 ConnectionTimeout 执行Open方法之后等待建立连接的秒数,默认为15秒。0表示无限期等待。 State 表示Connection对象是打开还是关闭的常量。
41
Connection对象的主要方法 Open:打开带有数据源的连接,即真正的建立起到数据源的物理连接。
Close:关闭一个打开的与数据源的连接,即终止与数据源的连接。 Execute:在没有创建Command对象的情况下执行连接中的一个命令。 BeginTrans:开始一个事务。 CommitTrans: 提交一个事务。 RollbackTrans:回滚一个事务。
42
Connection对象的主要事件 ExecuteComplete:连接中的命令被执行后发生的动作。
BeginTransComplete:在BeginTrans方法完成后发生的动作。 RollbackTransComplete:当RollbackTrans操作完成时发生的动作。 WillConnect:在试图连接到数据源之前发生的动作。 WillExecute:试图在连接中执行一条命令前发生的动作。
43
Connection对象的主要集合 Errors Error对象的集合。 Properties 描述连接的Property对象集合。
44
使用Connection对象 (1)设置ConnectionString连接属性 Dim adoCn As ADODB.Connection
Set adoCn = New ADODB.Connection '使用ODBC数据源连接数据库 adoCn.ConnectionString = "DNS=ODBC_DSN;UID = LoginID; PWD= password" '使用OLE DB提供者连接数据库 adoCn.ConnectionString = "Provider=SQLOLEDB.1;User ID=LoginID; Initial Catalog=Pubs;Data Source=DB_Server_Name"
45
使用Connection对象(续) (2)使用Open方法建立连接 (3)使用Close方法断开连接 adoCn.Open
adoCn.Close
46
15.3.2 Command对象 Command对象代表对数据源执行的命令。
使用Command命令可以查询数据,并将查询结果返回给RecordSet对象。
47
Command对象的主要属性 ActiveConnection:指定当前使用的连接。
CommandText:命令的文本表达(SQL语句、存储过程名和表名)。 CommandType:指定要执行的命令的类型,与CommandText属性的内容对应。取值如下: CmdText:指定CommandText的内容是一个SQL语句。 adCmdTable:指定CommandText的内容是一个表名。 adCmdStoredProc:指定CommandText的内容是一个存储过程名。 adCmdUnknown:默认值,表示命令类型未知。
48
Command对象的主要属性(续) CommandTimeout 数据源作出响应的最长等待秒数。 Name 表示Command对象的字符串。
State 表示对象是打开、关闭、正在执行某一命令和获取记录时的状态常量,其取值同Connection对象的State属性。
49
Command对象的主要方法 Excute 执行CommandText属性中指定的命令并返回由此生成的记录集。
CreateParameter 创建一个与命令相关的新的参数对象。
50
Command对象的主要集合 Parameters Properties 与Command对象相关的Parameter对象的集合。
描述Command对象相关的Property对象的集合。
51
使用Command对象 '声明对象 Dim adoCn As ADODB.Connection
Dim adoCm As ADODB.Command '建立连接 Set adoCn = New ADODB.Connection adoCn.ConnectionString = "Provider=SQLOLEDB.1;User ID=LoginID; " _ & "Initial Catalog=pubs;Data Source=DB_Server_Name" adoCn.Open
52
使用Command对象(续) '执行命令 Set adoCm = New ADODB.Command
Set adoCm.ActiveConnection = adoCn adoCm.CommandText = "select * from authors" adoCm.Execute '使用Command对象名执行命令 adoCm.Name = "SelAuthors" adoCn.SelAuthors '用名字执行命令
53
15.3.3 Recordset对象 代表从数据提供者那里获取的数据记录集。 Recordset对象的主要功能包括: 建立记录集;
确定要操作的记录集中的记录; 通过移动指针浏览记录; 对记录集中的数据执行更改操作; 对记录集中的数据进行过滤。
54
Recordset对象的主要属性 AbsolutePosition:记录集中当前记录的顺序位置。
ActiveCommand:记录集中创建的命令。 ActiveConnection:记录集中创建的连接。 BOF:如果当前行移动到记录集的第一条记录的前边,则为真。 EOF:如果当前行移动到记录集的最后一行记录的后边,则为真。 Bookmark:记录集中当前记录的唯一标识。 DataSource:指定要绑定的数据源。
55
Recordset对象的主要属性(续) 其中“选择表达式”的写法同SELECT语句中的WHERE子句。 释放过滤的语句为:
EditMode:表示当前记录是否正在被编辑,这个值可以是adEditNone、adEditInProgress、adEditAdd和adEditDelete。 Filter:允许用户选择记录集中的部分数据进行操作。其使用方法为: Recordset对象名.Filter = 选择表达式 其中“选择表达式”的写法同SELECT语句中的WHERE子句。 释放过滤的语句为: Recordset对象名.Filter = adFilterNone
56
Recordset对象的主要属性(续) MaxRecords:记录集中能返回的最多记录数。
RecordCount:记录集中记录的个数。如果ADO不能判断记录集有多少条记录,可以返回adUnknown(-1)。 Sort:将记录集按指定字段排序。 Source:记录集来源的命令和SQL查询。 CursorLocation:描述记录集中使用的游标的位置的常量。 CursorType:描述记录集中使用的游标类型的常量。 LockType:控制编辑过程中设置的加锁类型。
57
Recordset对象的主要方法 AddNew:向记录集中添加一条新记录。 CancelUpdat:取消对数据的修改。
Close:关闭记录集。 Delete:删除当前记录。 Find:查找符合某些规则的记录。 Move:将当前记录的位置移动一定的间隔。
58
Recordset对象的主要方法(续) MoveFirst:移动到第一条记录。 MoveLast:移动到最后一条记录
MoveNext:移动到下一条记录。 MovePrevious:移动到上一条记录 Open:打开一个记录集。 Update:当Edit和AddNew方法完成后要执行的方法。 UpdateBatch:在一个游标中当批量处理完成后要执行的方法。
59
Recordset对象的主要事件 EndOfRecordset 当记录集中因没有更多的记录,而引起MoveNext方法执行失败时产生的事件。
FieldChangeComplete 当字段中的值被改变后产生的事件。 RecordsetChangeComplete 当对记录集所做的修改被执行时产生的事件。
60
Recordset对象的主要事件(续) WillChangeField 一个Field对象的值被改变前产生的事件。
WillChangeRecord 一个列被改变之前产生的事件。 WillChangeRecordset 记录集中的修改都完成前产生的事件。 WillMove 记录指针重新定位前产生的事件。
61
Recordset对象的集合 Recordset对象包含的集合是Fields,它是记录集中的字段集合。
62
CursorLocation属性 用于设置游标的位置,该属性的取值为:
adUseClient:使用本地客户端游标。其特点是服务器将整个结果集传回给客户端,网络流量较大,但下载后对数据的浏览速度快。 adUseServer:默认值。使用数据源提供的服务器端游标。其特点是仅传送客户端需要的记录,网络流量小,但服务器资源消耗大。不支持Bookmark和AbsolutePosition等属性。
63
CursorType属性 用于指定Recordset对象希望执行的动作。 ADO Recordset对象支持四种游标类型:
动态游标(adOpenDynamic) 静态游标(adOpenStatic) 键集游标(adOpenKeyset) 仅向前游标(adOpenForwardonly)
64
LockType属性 adLockReadOnly:默认值,不能编辑记录集中的数据。 adLockPessimistic:悲观锁。。
用于设置多用户情况下记录集中的记录的锁定方式,用于保证各用户间的操作互不干扰。 其取值有: adLockReadOnly:默认值,不能编辑记录集中的数据。 adLockPessimistic:悲观锁。。 adLockOptimistic:乐观锁。 adLockBatchOptimistic:适用于使用UpdateBatch方法更新批量多条记录的记录集。
65
使用Recordset对象的步骤 (1)打开记录集 使用Command对象的Execute方法创建Recordset对象:
Set adoRecordset = adoCommand.Execute 使用Connection对象的Execute方法创建Recordset对象: Set adoRecordset = adoConnection.Execute("select * from authors") 直接使用Recordset对象的Open方法创建Recordset对象: adoRecordset.Open
66
Recordset对象的Open方法 语法格式为: Recordset.Open Source, ActiveConnection,
CursorType, LockType, Options 所有这些选项都是可选的,可以在调用Open方法之前,通过设置这些选项对应的属性来设置其值。 Source选项指定了要从哪里获取数据,其有: 一个返回记录的Command对象。 SQL语句。 表名。 存储过程名。
67
Open方法的一些选项 ActiveConnection选项指定了要使用的ADO连接,这个选项可以是一个已打开的Connection对象,也可以是一个连接字符串。 Options选项为提供者提供了附加信息。这些选项包括: adCmdUnknown:默认值。不向提供者提供附加信息。 adCmdText:告诉提供者CommandText属性是文本命令。 adCmdTable:是表的名字。 adCmdStoredProc:是存储过程名。 adCmdFile:是一个文件名。
68
示例 Dim adoRs As ADODB.Recordset Set adoRs = New ADODB.Recordset …
adoRs.ActiveConnection = adoCn adoRs.CursorType = adOpenForwardOnly adoRs.CursorLocation = adUseClient adoRs.Source = "authors" adoRs.Open , , , , adCmdTable
69
15.3.4 Field对象 Recordset.Fields(0).Value Recordset(0)
由于Fields集合是Recordset对象的默认属性,因此,在使用时可以省略此名称。例如: Recordset.Fields(0).Value Recordset(0)
70
Field对象的主要属性 ActualSize 字段中实际存储的数据尺寸。 DefinedSize 字段能存储的最大数据量。 Name
字段的名称。 NumericScale 十进制小数点右边的位数。
71
Field对象的主要属性(续) OriginalValue 在其他用户改变字段之前字段的值。 Precision 十进制小数的精度。
Type 描述字段的数据类型的常量。 Value 字段中存储的数据。
72
使用Field对象 Private Sub cmdGo_Click() '演示引用Fields字段值的不同方法
Dim adoCn As ADODB.Connection Dim adoRs As ADODB.Recordset Dim adoFld As ADODB.Field '打开一个recordset,访问SQL Server自带的Northwind数据库中的Customers表 Set adoCn = New ADODB.Connection adoCn.Open "provider = SQLOLEDB.1;Data Source=(local); User ID = sa; Initial Catalog=Northwind" Set adoRs = New ADODB.Recordset adoRs.Open "Customers", adoCn
73
使用Field对象(续) '下述几种对字段的访问方法效果是一样的 '使用字段的索引,明确写出集合的名字
lboResults.AddItem adoRs.Fields(0).Value lboResults.AddItem adoRs.Fields(0) '使用字段的索引,使用默认属性 lboResults.AddItem adoRs(0).Value lboResults.AddItem adoRs(0)
74
使用Field对象(续) '使用字段的名字,明确写出集合的名字
lboResults.AddItem adoRs.Fields("CustomerID").Value lboResults.AddItem adoRs.Fields("CustomerID") '使用字段的名字,使用默认属性 lboResults.AddItem adoRs("CustomerID").Value lboResults.AddItem adoRs("CustomerID") End Sub
75
15.3.5 Parameter对象 Parameter对象表示Commad对象的一个独立参数。
这个对象是SQL查询时的一个运行参数,或者是存储过程中的输入或输出参数。 大多数情况下,参数用于各种类型的参数化命令中。
76
Parameter对象的主要属性 Direction:表示一个参数是输入参数还是输出参数。 Name:参数的名称。
NumericScale:十进制小数点右边的位数。 Precision:十进制小数的精度。 Properties:描述这个参数的Property对象的集合。 Type:参数的数据类型。 Value:参数的当前值。
77
使用Parameter对象 Private Sub cmdGetParameters_Click() '获得指定的存储过程的参数
Dim adoCm As ADODB.Command Dim adoPrm As ADODB.Parameter Dim adoRs As ADODB.Recordset Set adoCm = New ADODB.Command Set adoCm.ActiveConnection = adoCn adoCm.CommandText = "reptq3" 'pubs数据库中的存储过程名 adoCm.CommandType = adCmdStoredProc adoCm.Parameters.Refresh '获得存储过程参数
78
使用Parameter对象(续) '填充Parameters中的每个参数
For Each adoPrm In adoCm.Parameters If adoPrm.Direction = adParamInput Then adoPrm.Value = InputBox(adoPrm.Name, "enter parameter value") End If Next adoPrm '从存储过程得到记录集 Set adoRs = adoCm.Execute ... End Sub
79
15.3.7 Property对象 ADO 对象有两种类型的属性:内置属性和动态属性。
内置属性是在ADO中实现并立即可用于任何新对象的属性,并使用“对象名.Property”语法来得到和设置属性值。 动态属性由基本的数据提供者定义,并出现在相应的ADO对象的Properties集合中。
80
Property对象 动态属性只能通过集合使用“对象名.Properties(0)” 或“对象名.Properties("Name")”语法来引用。 Property对象有四个属性: Name:标识属性的字符串。 Type:用于指定属性数据类型的整数。 Value:包含设置属性的值。 Attributes:指示特定于提供者的属性特征的长整型值。
81
Error对象 Error对象记录数据操作过程中所发生的错误信息。
由于数据访问可能会引起多个错误,因此,Error对象是包含在一个Errors集合中的。 如果最后一次的操作成功了,则这个集合为空,否则,可以使用For Each来依次检查每个错误。
82
Error对象的主要属性 Description:错误信息的文字描述。 HelpContext:错误信息的帮助主题。
HelpFile:错误信息的帮助文件。 Number:错误信息编码。 Source:引起错误的对象。 SQLState:原始ODBC SQLState常量。
83
使用Error对象 Private Sub cmdConnect_Click() '试图要连接到数据源,但捕获到错误
Dim Cnn As Connection Dim Err As Error On Error GoTo HandlerErr Set Cnn = New Connection Cnn.Open txtConnectionString '假设要连接的服务器不存在
84
使用Error对象(续) ExitHere: Exit Sub HandlerErr:
For Each Err In Cnn.errrors MsgBox "Error " & Err.Number & " " & Err.Description Next Err Resume ExitHere End Sub
85
15.3.9 使用ADO对象模型访问数据库 一般步骤: 创建Connection对象与数据源建立连接。
创建Command对象,设置该对象的活动连接是上一步的Connection对象,设置命令文本属性为访问数据源所需的命令。 使用Command对象的Execute方法执行命令,如果是查询命令,该方法会返回一个Recordset对象。 使用Recordset对象操作记录。
86
查询authors表示例 Dim adoConnection As New ADODB.Connection
Dim adoCommand As New ADODB.Command Dim adoRecordset As New ADODB.Recordset adoConnection.ConnectionString = "Provider=SQLOLEDB.1;User ID=sa; Initial Catalog=Pubs;Data Source=(local)" adoConnection.Open adoCommand.ActiveConnection = adoConnection adoCommand.CommandType = adCmdTable adoCommand.CommandText = ”authors“ set adoRecordset = adoCommand.Execute
87
使用ADO对象访问数据库的简化步骤 创建Connection对象与数据源建立连接。
创建Recordset对象,并设置好活动连接和其它重要属性。 使用Recordset对象的Open方法,直接打开一个记录集。 使用Recordset对象操作记录。
88
示例 Dim adoConnection As New ADODB.Connection
Dim adoRecordset As New ADODB.Recordset ‘建立连接 adoConnection.ConnectionString = "Provider=SQLOLEDB.1;User ID=sa; Initial Catalog=Pubs;Data Source = (local)" adoConnection.Open ‘建立记录集 adoRecordset.ActiveConnection = adoConnection adoRecordset.CursorLocation = adUseClient adoRecordset.CursorType = adOpenDynamic adoRecordset.Source = "select * from authors" adoRecordset.Open
Similar presentations