第 10 章 ado 数据库编程

47
第 10 第 ADO 第第第第第 本本本本 ADO 本本本本本本本本本 ADO 本本本本本本 本本 ADO 本本本本本本本本本本本 ADO 本本本本本本本 本本本本本本本本本本本 本本 ADO 本本本本本本本本本本本本

Upload: alanna

Post on 17-Jan-2016

105 views

Category:

Documents


5 download

DESCRIPTION

第 10 章 ADO 数据库编程. 本章要点:  ADO 的概念及其对象组成  ADO 各对象的作用  利用 ADO 连接到各种数据库的方法  ADO 各对象的属性、方法的含义及其使用方法  利用 ADO 编写数据库应用程序的方法. 10.1 ADO 对象模型概述. 10.1.1 ADO 的概念 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 10 章   ADO 数据库编程

第 10 章 ADO 数据库编程 本章要点: ADO 的概念及其对象组成 ADO 各对象的作用 利用 ADO 连接到各种数据库的方法 ADO 各对象的属性、方法的含义及其使用方法

利用 ADO 编写数据库应用程序的方法

Page 2: 第 10 章   ADO 数据库编程

10.1 ADO 对象模型概述 10.1.1 ADO 的概念 ADO ( ActiveX Data Object )是 DAO/RDO 的后继

产物,是微软最新的数据访问组件(微软数据访问组件简称 MDAC )的一部分, MDAC 的常用版本有 MDAC 2.5 和 MDAC 2.7 , ADO 的最新的版本 ADO.NET 也包含在 MDAC 2.7 中。

ADO 是基于 OLE DB 之上的面向对象的数据访问模型,OLE DB 是 Microsoft 开发的一种高性能的、基于 COM 的数据访问技术,其作用是向应用程序提供一个统一的数据访问方法,而不需要考虑数据源的具体格式和存储方式。

Page 3: 第 10 章   ADO 数据库编程

10.1.2 ADO 模型的对象

Page 4: 第 10 章   ADO 数据库编程

1 .基本对象 ( 1 ) Connection 对象 ( 2 ) Recordset 对象 ( 3 ) Command 对象 ( 4 ) Field 对象 ( 5 ) Property 对象 ( 6 ) Parameter 属性 ( 7 ) Error 对象 2 .集合对象 ( 1 ) Errors 集合对象 ( 2 ) Parameters 对象 ( 3 ) Fields 对象 ( 4 ) Properties 对象 3 .事件 ( 1 ) ConnectionEvents 类事件 ( 2 ) RecordsetEvents 类事件

Page 5: 第 10 章   ADO 数据库编程

10.1.3 ADO 模型的编程模型 ADO 提供的对象可以完成以下活动: ( 1 )连接到数据源,主要使用 Connection 对象。

可选择开始一个事务。 ( 2 )执行 SQL 命令,使用 Command 对象。 ( 3 )可选择在 SQL 命令中指定列、表和值作为变量

参数,主要使用 Parameter 对象。 ( 4 )执行命令,主要使用 Command 、 Connectio

n 或 Recordset 对象。 ( 5 )如果命令是以按行返回的记录集,则将行存储

在缓存中,主要使用 Recordset 对象。 ( 6 )可选择创建缓存视图,以便能对数据进行排序、

筛选和定位,主要使用 Recordset 对象。

Page 6: 第 10 章   ADO 数据库编程

( 7 )对记录集中的数据进行添加、删除或更改操作,主要使用 Recordset 对象。

( 8 )在适当情况下,使用缓存中的更改内容来更新数据源,主要使用 Recordset 对象。

( 9 )在使用事务之后,可以接受或拒绝在事务期间所作的更改,结束事务,主要使用 Connection 对象及事务处理方法。

Page 7: 第 10 章   ADO 数据库编程

10.2 Connection 对象 使用 Connection 对象的集合、方法和属性可执行下列操作: ( 1 )

在打开连接前使用 ConnectionString 、 ConnectionTimeout 和 Mode 属性对连接进行配置。

( 2 )设置 CursorLocation 属性以便调用支持批更新的“客户端游标提供者”。

( 3 )使用 DefaultDatabase 属性设置连接的默认数据库。( 4 )使用 IsolationLevel 属性为在连接上打开的事务设置隔离级别。

( 5 )使用 Provider 属性指定 OLE DB 提供者。 ( 6 )使用 Open 方法建立到数据源的物理连接。使用 Close 方法

将其切断。 ( 7 )使用 Execute 方法执行对连接的命令,并使用 CommandTi

meout 属性对执行进行配置。

Page 8: 第 10 章   ADO 数据库编程

( 8 )可使用 BeginTrans 、 CommitTrans 和 RollbackTrans 方法以及 Attributes 属性管理打开的连接上的事务(如果提供者支持则包括嵌套的事务)。

( 9 )使用 Errors 集合检查数据源返回的错误 ( 10 )通过 Version 属性读取所使用的 ADO

执行版本。 ( 11 )使用 OpenSchema 方法获取数据库纲

要信息。

Page 9: 第 10 章   ADO 数据库编程

10.2.1 Connection 对象的常用属性

1 . Attributes 属性 2 . CommandTimeout 属性 3 . ConnectionString 属性 4 . ConnectionTimeout 属性 5 . CursorLocation 属性 6 . DefaultDatabase 属性 7 . IsolationLevel 属性 8 . Mode 属性 9 . Provider 属性 10 . State 属性 11 . Version 属性

Page 10: 第 10 章   ADO 数据库编程

10.2.2 Connection 对象的常用方法 1 . BeginTrans 方法格式如下: level = Connection.BeginTrans() 或 Connection.

BeginTrans

2 . CommitTrans 方法格式如下: Connection.CommitTrans

3 . RollbackTrans 方法格式如下: Connection.RollbackTrans

4 . Open 方法语法格式如下: connection.Open ConnectionString, UserID, Pass

word, OpenOptions

Page 11: 第 10 章   ADO 数据库编程

5 . Close 方法使用格式如下: Connection.Close

6 . Execute 方法格式 1 : connection.Execute CommandText,

RecordsAffected, Options格式 2 :Set recordset = connection.Execute (Comman

dText, RecordsAffected, Options) 7 . Cancel 方法 8. OpenSchema 方法

Page 12: 第 10 章   ADO 数据库编程

10.2.3 连接到数据库的方法 1 .通过 DSN 建立连接 【例 10-1】在第 7 章建立了两个 DSN,分别是 jiaox

ue 和 SQLPubs ,请编写一个连接到这两个 DSN的程序。程序的设计界面如图 10-4 所示。然后执行时,单击“建立到 SQLPubs 的连接”将建立与 SQLPubs DSN的连接,单“建立到 jiaoxue DSN的连接”将建立与 jiaoxue DSN的连接。

题意分析:为建立连接,可先给 Connection对象的ConnectionString属性赋值为需要建立连接的参数,然后执行 Connection对象不带参数的 Open方法,也可在调用 Connection的 Open方法时指定连接字符串。此题需注意连接到 SQL DSN和连接到Microsoft Access DSN的区别。

Page 13: 第 10 章   ADO 数据库编程
Page 14: 第 10 章   ADO 数据库编程

2 .直接使用数据库文件名称或数据源名称建立连接

( 1 )使用 SQL Server普通安全模式建立到 Pubs 数据库的连接

( 2 ) SQL Server 信任安全模式建立到 Pubs 数据库的连接

【例 10-2】直接建立到 SQL Server 2000的数据库“ Pubs” 的连接和到当前目录下的 Microsoft Access数据库“教学”的连接。程序的设计界面如图 10-5 所示。运行时单击“建立到 SQL Pubs 数据库的连接”将以两种方法建立到 SQL Server 数据库 Pubs 的连接,单击“建立到 Access教学数据库的连接”将以两种方式建立到 Access 数据库“教学”的连接。

Page 15: 第 10 章   ADO 数据库编程
Page 16: 第 10 章   ADO 数据库编程

10.2.4 通过打开的连接执行 SQL 语句 【例 10-3】通过 Connection 的 Execute 方

法来执行 SQL 语句,为当前目录下的“教学”数据库中的“学生表”添加一条记录,记录的“学号”和“姓名”值分别为“ 0001020” 和“周小华”。

题意分析:先采用直接使用数据库名的方法连接到 Access “ ”数据库 教学 ,然后通过调用 Connection的 Execute方法来执行 SQL-Insert语句。

Page 17: 第 10 章   ADO 数据库编程

( a )执行前 ( b )执行后

Page 18: 第 10 章   ADO 数据库编程

10.3 RecordSet 对象 10.3.1 Recordset 对象简介 在 ADO中定义了四种不同的游标类型: ( 1 )动态游标 ( 2 )键集游标 ( 3 )静态游标 ( 4 )仅向前游标10.3.2 Recordset 对象的属性 1 . AbsolutePage 、 PageCount 与 PageSize 属

性 2 . AbsolutePosition 和 RecordCount 属性 3 . ActiveConnection 属性 4 . CacheSize 属性

Page 19: 第 10 章   ADO 数据库编程

5 . CursorLocation 属性 6 . CursorType 属性 7 . EditMode 属性 8 . Filter 属性 9 . LockType 属性 10 . MaxRecords 属性 12 . Sort 属性 13 . Source 属性 14 . State 属性

Page 20: 第 10 章   ADO 数据库编程

10.3.3 Recordset 对象的方法 1 . Cancel 方法 该方法的使用格式如下:Object.Cancel2 . CancelUpdate 方法 该方法的使用格式如下:Recordset.CancelUpdate3 . CancelBatch方法 该方法的使用格式如下:Recordset.CancelBatch AffectRecords4 . NextRecordSet 方法该命令的格式如下:SetRecordset2= Recordset1.NextRecordset( Records

Affected )

Page 21: 第 10 章   ADO 数据库编程

5 . Open 方法 Open 方法的使用格式如下:Recordset.OpenSource,ActiveConnection,CursorTyp

e, LockType, Options6 . Resync 方法 该方法的使用格式如下:Recordset.Resync AffectRecords, ResyncValues7 . Save 方法 该方法的使用格式如下:Recordset.Save FileName, PersistFormat8. UpdateBatch方法 该方法的使用格式如下:Recordset.UpdateBatch AffectRecords 9. GetRows 方法 调用格式如下:Array=Recordset.GetRows() 10. Supports 方法 该方法的使用格式如下:boolean = Recordset.Supports( CursorOptions )

Page 22: 第 10 章   ADO 数据库编程

10.3.4 访问 Recordset 对象字段的方法

Page 23: 第 10 章   ADO 数据库编程

10.3.5 Recordset 对象应用实例 【例 10-4】使用 ADO 的 Recordset 对象把

当前目录下的“教学”数据库中的“学生表”中的数据显示出来。程序设计界面如图 10-7( a )所示。程序刚运行时,只有“连接”按钮可用,单击该按钮,将建立到当前目录下的“教学”数据库的连接,然后“连接”按钮不可用,“显示”按钮可用。单击“显示”按钮,将把“学生表”中的数据显示在 MsFlexGrid控件中,同时“显示”按钮不可用,“关闭”按钮可用,如图 10-7 ( b)所示。单击“关闭”按钮,将关闭记录集和连接并结束程序。

Page 24: 第 10 章   ADO 数据库编程

题意分析:本题要用 MsFlexGrid控件显示表的内容,而 MsFlexGrid控件并不是 VB 的标准控件,应该首先把它加载到 VB 的工程中,加载的方法是执行【工程】→【部件】命令,在出现的部件对话框中选中“ Microsoft FlexGrid Control 6.0” 后按“确定”按钮。要在 MSFlexGrid控件中显示数据表中的内容,可通过循环把表中的各字段的内容依次赋值到 MsFlexGrid 的 MatrixText 属性中。

Page 25: 第 10 章   ADO 数据库编程
Page 26: 第 10 章   ADO 数据库编程

10.4 Command 对象 10.4.1 Command 对象简介 Command 对象定义了将对数据源执行的指定命令。

通过 Command 对象可以执行 SQL 语句、数据库中的存储过程等,虽然 Connection 对象的 Execute 方法也能够执行 SQL 语句,但 Command 对象还提供了参数化查询等专门的运行方式。

利用 Command 对象可以查询数据库中的记录以形成记录集,还可以更改数据库的结构。但由于数据提供者提供的功能不同,在引用某些 Command 集合、方法或属性时可能会产生错误,需要使用者查询相应的参考书籍。

Page 27: 第 10 章   ADO 数据库编程

10.4.2 Command 对象的常用属性

1 . ActiveConnection 属性 2 . CommandText 属性 3 . CommandTimeout 属性 4 . CommandType 属性 5 . Prepared 属性 6 . State 属性

10.4.3 Command 对象的常用方法 1 .Cancel 方法

2 . Execute 方法

Page 28: 第 10 章   ADO 数据库编程

10.4.4 Command 对象应用实例 【例 10-5】已知“教学管理”数据库位于当前目录下,请使用 Command 对象查询出自动化专业的全部学生的学号、姓名和年级,并调用例 10-4 中的 ShowData方法把查询结果显示出来。程序设计界面如图 10-8( a )所示。程序刚运行时,只有“连接”按钮可用,单击该按钮,将建立到当前目录下的“教学管理”数据库的连接,然后“连接”按钮不可用,“显示查询结果”按钮可用。单击“显示查询结果”按钮,将把查询结果的数据显示在 MsFlexGrid控件中,同时“显示查询结果”按钮不可用,“关闭”按钮可用,如图10-8( b)所示。单击“关闭”按钮,将关闭记录集、连接并结束程序。

Page 29: 第 10 章   ADO 数据库编程

题意分析:可使用 Command 对象的 Execute 方法执行查询得到结果记录集,处理的一般步骤如下:

( 1 )设置 Command 对象的 ActiveConnection 属性为所需要的连接对象名;

( 2 )设置 Command 对象的 CommandText 属性为要执行的查询字符串;

( 3 )设置 Command 对象的 CommandType 属性为要执行的命令类型;

( 4 )调用 Command 对象的 Execute 方法执行查询(若是返回记录集的查询,可把结果赋值给一个记录集对象变量)。

Page 30: 第 10 章   ADO 数据库编程
Page 31: 第 10 章   ADO 数据库编程

【例 10-6】给当前目录中的“教学”数据库中的“教师表”添加一条记录,记录值为 {‘05003’,‘杨权’ ,‘女’ ,#09/22/69#,‘讲师’ ,‘计算机学院’ ,3855.50}。要求使用 Command 对象。程序的运行界面如图 10-9所示,程序运行时单击“连接并显示”命令将把“教师表”中的当前数据显示出来,如图 10-9( a )所示,单击“插入并显示”将显示插入一条记录后的“教师表”信息,如图 10-9( b)所示。

题意分析:可通过 Command对象来执行一条 SQL-INSERT命令,从而可以插入一条记录到相应的表中。在插入前和插入后把该表的内容分别显示出来以观察程序的运行结果。

Page 32: 第 10 章   ADO 数据库编程
Page 33: 第 10 章   ADO 数据库编程

10.5 Field 对象和 Fields 集合 10.5.1 Field 对象的常用属性 1 . ActualSize 属性 2 . Attributes 属性 3 . DefinedSize 属性 4 . Name 属性 5 . NumericScale 属性 6 . OriginalValue 属性 7 . Precision 属性 8 . Type 属性 9 . UnderlyingValue 属性 10 . Value 属性

Page 34: 第 10 章   ADO 数据库编程

10.5.2 Field 对象的常用方法

1 . AppendChunk 方法 该方法的使用格式如下:Field.AppendChunk Data 2 . GetChunk方法 该方法的使用格式如下:variable = field.GetChunk( Size )10.5.3 Fields 对象的常用属性 Fields 对象是 Field 对象的集合,它有一个属性 Count ,该属性用来返回 Fields 对象中包含的 Field 对象个数。如果 Count 属性为零,集合中将不存在对象。 Field集合对象的每个成员都有一个编号,从 0开始,以 Count 属性值减 1 结尾。

Page 35: 第 10 章   ADO 数据库编程

10.5.4 Fields 对象的常用方法 1 . Append 方法 该方法的语句格式如下:fields.Append Name, Type, DefinedSize, Attrib

2 . Delete 方法 该方法的使用格式如下:Fields.Delete Field 3 . Item 方法 使用格式如下:Set Field = Fields.Item ( Index ) 【例 10-7 “ ”】编写一个程序,用来显示 教学 数据库中的

“ ”教师表 中的字段信息。程序设计界面如图 10-10( a “)所示。程序运行时,在列表框中将显示出 教师

”表 的所有字段名,当在列表框中选中相应的字段时,该字段的长度、类型和字段值将分别显示在相应的文本框中,如图 10-10( b )所示。

Page 36: 第 10 章   ADO 数据库编程

题意分析:在 Form_Load 事件中,建立到“教学”数据库的连接并创建以“教师表”为基础的 Recordset 对象,然后通过一个循环把 Fields 集合中每个 Field对象的 Name 属性添加到列表框中。程序运行时,当发生 List1 的 Click事件时,将选中字段的属性 DefinedSize 、 Type 、 Value 值分别赋给相应的文本框的 Text 属性。

Page 37: 第 10 章   ADO 数据库编程

10.6 Error 对象和 Errors 集合 10.6.1 Error 对象的常用属性 1 . Description 属性 2 . NativeError 属性 3 . Number 属性 4 . Source 属性 5 . SQLState 属性 10.6.7 Errors 对象的常用属性与方法 Clear 方法的使用格式如下: Errors.Clear

Page 38: 第 10 章   ADO 数据库编程

10.7 利用 ADO Data控件进行数据库编程

10.7.1 ADO Data 控件简介 1 .添加 ADO Data控件 添加方法是:执行【工程】→【部件】命令,将出现的“部

件”对话框,在该对话框中选中“ Microsoft ADO Data Control 6.0( OLEDB )”后按“确定”按钮。

2 . ADO Data控件的主要功能 ( 1 )连接到一个本地数据库或远程数据库。 ( 2 )从指定的数据库表或视图中提取记录构成记录集,或通

过执行一个基于结构化查询语言 (SQL) 的查询来构成记录集,或执行存储过程来构成记录集。

( 3)将字段的数值传递给数据绑定控件,可以在这些控件中显示或更改字段值。

( 4)添加新的记录,或根据对显示在数据绑定控件中的数据的 更改来更新一个数据库。

Page 39: 第 10 章   ADO 数据库编程

10.7.2 ADO Data 控件的属性窗口

1 .“通用”属性页 建立连接字符串有三种方式,分别如下: ( 1 )使用 Data Link文件 ( 2 )使用 ODBC 数据源名称 ( 3 )使用连接字符串 2 .“身份验证”属性页 3 .“记录源”属性页

Page 40: 第 10 章   ADO 数据库编程

10.7.3 ADO Data 控件的常用属性 1 . ConnectionString 属性 2 . UserName 属性 3 . Password 属性 4 . RecordSource 属性 5 . CommandType 属性 6 . CursorLocation 属性 7 . CursorType 属性 8 . LockType 属性 9 . Mode 属性 10 . MaxRecords 属性 11 . ConnectionTimeout 属性 12 . CacheSize 属性 13 . BofAction 、 EofAction 属性

Page 41: 第 10 章   ADO 数据库编程

10.7.4 ADO Data 控件的常用事件

1 . WillMove 事件 2 . MoveComplete 事件 3 . WillChangeField 事件 4 . FieldChangeComplete

5 . WillChangeRecord 事件 6 . RecordChangeComplete 事件 7 . WillChangeRecordset 事件 8 . RecordsetChangeComplete 事件 9 . InfoMessage 事件

Page 42: 第 10 章   ADO 数据库编程

10.7.5 常用的与 ADO Data 控件绑定使用的数据绑定控件

使用 ADO Data 控件与数据绑定控件开发数据库应用程序的一般步骤如下:

( 1 )加载 ADO Data控件并在界面上绘制该控件;( 2 )设置该控件的 ConnectionString 属性以连接到数据库;( 3 )设置 RecordSource 属性以决定检索什么信息;( 4 )设置 CommandType 属性以告诉提供者命令的类型;( 5 )设置 CursorType 属性以决定游标的类型;( 6 )根据需要再设置 ADO Data控件的其它属性;( 7 )在窗体上放置数据绑定控件;( 8 )设置数据绑定控件的 DataSource 属性为 ADO Data控件名;( 9 )设置数据绑定控件的 DataField 属性为记录集中的某个字段名;( 10 )编写事件过程对程序进行控制。

Page 43: 第 10 章   ADO 数据库编程

10.7.6 使用 ADO Data 控件创建数据库应用程序示例

【例 10-9】把当前目录下的“教学”数据库中的“学生表”信息显示在一个 DataGrid控件中。要求使用 ADO Data控件。

题意分析: ADO Data控件与 DataGrid控件均不是 VB工具箱中的控件,需要把它们加载进工程,加载的方法前面已经说明。在工程中绘制 ADO Data控件和 DataGrid控件,界面设置如图 10-18 ( a )所示。

Page 44: 第 10 章   ADO 数据库编程

图 10-18 例 10-9 程序设计界面与运行界面

Page 45: 第 10 章   ADO 数据库编程

10.8 ADO 开发实例 【例 10-10】编写一个程序,对“教学”数据库中

“教师表”的工资信息进行修改,从而实现加工资的功能。加工资的方法是:所有人的工资增加 10% 。要求使用 ADO 方式并把对工资的修改作为一个事务,最后通过对话框确认事务提交或撤消。

题意分析:首先要建立对“教学”数据库的连接,然后调用连接的 BeginTrans 方法开始一个事务,调用连接的 Execute 方法执行一个 SQL-Update 语句对工资进行修改,然后可通过一个消息框询问用户是否保存对工资的修改,如果回答“是”,则提交事务,确认对工资的修改,如果回答“否”,则撤消对工资的修改。

Page 46: 第 10 章   ADO 数据库编程

【例 10-11】编写一个对“教学”数据库中的“课程表”进行维护的程序,程序的设计界面如图 10-19所示。界面上的文本框用来显示当前记录的内容,界面上的按钮用来执行对记录集的相应操作。要求:( 1 )只有在添加记录和修改记录时,才能向文本框中输入内容。( 2 )执行相应操作时,按钮的状态要发生变化。如记录指针移到了首记录,“首记录”和“前移”按钮不能使用;单击“添加”按钮后,所有的移动按钮、“删除”按钮、“添加”和“修改”按钮均不可用等等。( 3 )使用 ADO编程。

Page 47: 第 10 章   ADO 数据库编程

小结 ADO ( ActiveX Data Objects )是 Microsoft 最新的

数据访问接口,通过它可以访问多种类型的数据库。 ADO由七个基本对象组成,这七个基本对象分别是 Connection 、 Recordset 、 Command 、 Field 、 Property 、 Parameter 和 Error ,另外它还包含 Errors 、 Parameters 、Fields 、 Properties四 S 个集合对象。使用 ADO 进行编程的一般步骤是:首先使用 Connection 建立与数据库的连接,然后通过执行 Recordset 对象的 Open (或 Execute )方法或 Command 对象的 Execute 方法产生一个记录集,然后就可以对记录集对象进行具体的数据操作了。本章详细介绍了 Connection 、 Recordset 、 Command 、Field 和 Error 对象的属性和方法,并通过实例详细地解析了这些对象的使用方法。另外本章还介绍了 ADO Data控件的属性和方法,并对利用 ADO Data控件和数据绑定控件进行数据库编程进行了详细的解析。