1、第8章 ADO组件的使用,本章主要内容:TADOConnection组件的使用TADOCommand组件的使用TADODataSet组件的使用TADOQuery组件的使用,8.1 TADOConnection组件概述,TADOConnection组件用于建立数据库的连接,该连接可被多个数据集所共享。 TADOConnection 组件提供的功能: 控制数据库的连接 控制服务器的注册 管理事务 为关联的数据集提供数据库连接 将SQL命令发送到数据库中 从数据库中提取数据 8.1.1 TADOConnection 的常用属性 1. Attributes属性此属性用于设置连接的数据库的自动处理事务的
2、行为,它是TXactAttributes类型的集合,包括两个集合元素。,8.1 TADOConnection组件概述,(1)xaCommitRetaining 表示提交一个事务后自动开始一个新的事务;(2)xaAbortRetaining 表示回退一个事务的同时将开始一个新的事务。 2. CommandTimeout属性命令超时属性,用于设置一个命令执行时所能等待的最大时间值。例如,以下语句将命令执行时间设为120秒。ADOConnection1.CommandTimeout:=120; 3. Connected属性标识和数据库的连接是否处于激活状态。 4. ConnectionString属
3、性ConnectionString(连接字符串)用于指定数据库的连接信息。,8.1 TADOConnection组件概述,连接串的标准调用方式为: ADOConnection1.ConnectionString := Provider=ProviderRef;Remote Server= ServerRef ; 其中,连接串支持的常用参数见下表 。,建议使用连接串生成器创建连接字符串。,8.1 TADOConnection组件概述,5. ConnectOptions属性指定数据库连接是按照同步方式还是异步方式连接。 6. ConnectionTimeout属性指定建立连接的最大允许时间。 7.
4、 CursorLocation属性指定数据库游标是采用客户端模式还是服务器端模式。 8. DefaultDatabase属性表明数据源成功连接后,数据库的路径,这是由数据源自动赋值的。 9. IsolationLevel属性指定不同事务之间的相互独立的级别。 10. KeepConnection属性指定如果在没有打开数据集的情况下是否仍然保持数据库的连接。,8.1 TADOConnection组件概述,11. LoginPrompt属性指定在每次建立连接时是否弹出登录对话框提示用户登录,如果设为False则必须在 ConnectionString中指定登录数据库的用户名和密码。 12. Mod
5、e属性指定连接对数据库的操作权限 。 13. InTransactin属性表明TADOConnection组件是否处于处理事务的状态中。 14. DataSets属性和DataSetCount属性DataSets属性包含当前使用这个连接组件的数据集的列表。DataSetCount属性表示该连接组件关联的数据集数目。,8.1 TADOConnection组件概述,8.1.2 TADOConnection 的主要方法 1. BeginTrans方法开始启动一个新的事务,必须保证数据连接处于激活状态。 2. Cancel方法撤消正在建立的到数据库的连接。 3. CommitTrans方法向数据库提交
6、一个事务,提交成功后,在事务中对数据库所作的修改则写入数据库中,同时一个事务也结束。 4. Execute方法用来执行SQL命令。 5. GetProcedureNames方法获取数据库服务器上的存储过程名称。 6. GetTableNames方法获取数据库中的数据表名称。,8.1 TADOConnection组件概述,7. GetFieldNames方法获取当前连接的数据库中某个指定的数据表的所有字段名。 8. Open方法打开一个连接。 9. RollbackTrans方法撤回一个没有全部执行的事务,事务撤回之后,事务中所作的任何修改都不会写入数据库。 10. Close方法关闭一个连接。
7、 8.1.3 ADOConnection 的主要事件ADOConnection组件的主要事件如表8-4所示。,8.1 TADOConnection组件概述,表8-4 ADOConnection组件的主要事件,8.2 TADOConnection组件的使用,8.2.1 控制服务器的注册许多远程数据库服务器包含安全特性以阻止未经授权的访问。通常,这些服务器在允许数据库访问之前要求输入用户名和密码进行注册。 1. 在ConnectionString中加入用户名和密码。 例: procedure TForm1.Button2Click(Sender: TObject); begin adoconnec
8、tion1.ConnectionString:=Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=pubs;Data Source=qq-1;User ID=sa;password=123456; adoconnection1.Open(); end;,8.2 TADOConnection组件的使用,2. 将用户名和密码作为Open方法的参数。 例: ADOConnection1.Open(sa, 123456); 3. 使用OnWillConnect事件 procedure TForm1.ADOConnection
9、1WillConnect(Connection: TADOConnection;var ConnectionString, UserID, Password: WideString;var ConnectOptions: TConnectOption; var EventStatus: TEventStatus); beginUserID:=sa;password:=123456; end;,8.2 TADOConnection组件的使用,8.2.2 控制关联的数据集可以使用DataSets属性与DataSetCount属性一起遍历当前所有激活的数据集。 【例8-1】编写一个程序,通过TADO
10、Connection组件连接到数据库dbdemos.mdb,并调用GetTableNames方法获取数据库中所有表的名称,显示在一个列表框中。用一个TADOTable组件作为数据集,通过双击列表框中的表名来选取要打开的数据表,并用一个TDBGrigd组件显示表中的记录。 【实现步骤】 (1) 新建应用程序(2)定制窗体,8.2 TADOConnection组件的使用,图8-1 设计窗体界面,8.2 TADOConnection组件的使用,表8-5 各组件属性设置,8.2 TADOConnection组件的使用,(3) 编写代码(4) 运行程序,图8-2 程序运行界面,8.3 TADOComma
11、nd组件概述,TADOCommand组件主要用于运行一些数据定义语言(DDL)的SQL命令,或者运行一个没有返回结果集的存储过程,对于有返回结果集的SQL语句,则最好使用TADODataSet、TADOQuery或TADOStoredProc组件,尽管 TADOCommand 组件的Execute 方法可以返回一个结果集,但却是通过另一个ADO数据集组件来使用该记录集。 8.3.1 ADOCommand的主要属性 1. CommandText属性指定要执行的SQL命令。 CommandText编辑器是专门用来为ADO组件编写SQL 命令的。 2. CommandType属性指定要执行的命令的种
12、类。,8.3 TADOCommand组件概述,CommandType的选项及说明,3. Connection属性指定所使用的数据连接组件的名称,即TADOConnection 组件的名称。 4. ConnectionString属性ConnectionString(连接字符串)用于指定数据库的连接信息。,8.3 TADOCommand组件概述,5. CammandTimeout属性CammandTimeout属性是一个整型数,指定执行一个命令的最大允许时间,默认值是30秒。在TADOCommand组件通过TADOConnection 组件与数据连接的情况下,如果同时两者指定了CammandTi
13、meout属性,则优先考TADOCommand组件中设置的值。 6. ExecuteOption属性指定调用Execute方法时的命令特征。 7. ParamCheck属性指定在运行时如果SQL命令被改变,是否需要重建TADOCommand组件的参数列表。 8. Parameters属性在 SQL 命令中或在存储过程中需要传递参数的时候才需要设置这个值,并且,在命令类型(CommandType)指定为cmdText或 cmdStoredProc时,参数才有效。,8.3 TADOCommand组件概述,8.3.2 TADOCommand 的主要方法 1. Cancel方法中止一个正在执行的的命令
14、。 2. Execute方法执行TADOCommand 组件所包含的命令。,8.4 TADOCommand组件的使用,TADOCommand组件封装了ADO技术中的Command对象,通过它可以在数据库上执行SQL语句。在程序中使用TADOCommand组件,需要完成以下步骤:(1)使用Connection属性连接到一个TADOConnetion组件或使用ConnetionString属性直接连接数据库;(2)设置CommandType属性,指定CommandText属性中包括命令类型;(3)为CommandText属性设置命令文本,可以是SQL语句、表名、存储过程名;(4)调用Excute方
15、法执行命令。,8.5 TADODataSet组件概述,TADODataSet可通过SQL命令从一个数据表或者是多个数据表获取数据集,也可以直接获取整个数据表的数据,它还可以执行存储过程,也可以从磁盘文件获取数据。 8.5.1 TADODataSet 的主要属性 1. CommandTextCommandTex属性指定数据集合中所包含的命令,可以是SQL语句、一个表名或者一个存储过程名。 常用的调用形式为: with ADODataSet1 do beginClose;CommandType := cmdText;CommandText := SELECT * FROM Customer;Ope
16、n; end;,8.5 TADODataSet组件概述,2. DataSource设置数据源用来自另一个数据集的字段值去自动填充查询的参数。 8.5.2 TADODataSet组件的重要方法TADODataSet的方法与前面介绍TADOTable的属性一样。,8.6 TADODataSet组件的使用,8.6.1 TADODataSet组件的数据集类型TADODataSet是一个多用途的数据集,通过设置CommandType和CommandText属性,它可以作为表类型、查询类型、存储过程类型和文件类型的数据集使用。 1. 表类型数据集作为表类型数据集时,TADODataSet从单一的数据表中获
17、取所有行和列。 2. 查询类型数据集TADODataSet也可以执行SQL查询命令以获取数据集,使用时需要先设置CommandType属性为cmdText,然后在CommandText属性中设置要执行的SQL命令。 3. 存储过程类型数据集TADODataSet需要指定所执行的存储过程的名称。,8.6 TADODataSet组件的使用,4. 文件类型数据集使用这种类型数据集,需先设置CommandType属性为cmdFile,然后在CommandText属性中设置要打开的文件名。 【例8-2】在数据库dbdemos.mdb中,表customer存储的是顾客信息,表orders存储的是订单信息。
18、编程实现能方便地通过选定顾客来浏览其订单信息。将TADODataset组件的Parameters属性与DataSource属性配合使用,可以建立主/从关系的数据集。 【实现步骤】(1) 建立应用程序(2)定制窗体,8.6 TADODataSet组件的使用,图8-4 设计窗体界面,8.6 TADODataSet组件的使用,表8-7 各组件属性设置,8.6 TADODataSet组件的使用,8.6 TADODataSet组件的使用,(3) 运行程序,图8-5 程序运行界面,8.7 TADOQuery组件概述,TADOQuery 组件借助于SQL语言的的强大功能访问多个数据表,可以实现数据浏览、修改
19、和删除等操作,而且TADOQuery组件也可以实现参数查询。通常情况下,使用TADOQuery组件是为了从数据集中查询一部分字段或记录,也可以使用INSERT、DELETE、UPDATE、ALTER TABLE等SQL命令实现数据库的更新、插入和删除记录的操作。 8.7.1 主要属性 1. SQL属性SQL属性是TStrings类型的变量,包含了TADOQuery 组件要执行的SQL命令。请看下面的例子。,8.7 TADOQuery组件概述,with ADOQuery1 do begin/重新写入SQL的时候 必须关闭原来的查询 Close; SQL.Clear; /清除原来的SQL命令SQL
20、.Add(SELECT EmpNo, LastName, FirstName, HireDate); /设置新SQL命令SQL.Add(FROM Employee);pen; /执行有返回结果的SQL命令,获得想要的查询结果. end;,8.7 TADOQuery组件概述,2. Parameters属性Parameters属性中保存了SQL属性中的SQL命令中执行所需的参数。 3. RowsAffected属性返回最近一次查询所影响的记录数。 8.7.2 主要方法 1. Open方法Open方法用于执行SQL属性所指定的SQL命令,要返回记录集。 2. ExecSQL方法ExecSQL方法用于
21、执行SQL属性所指定的SQL命令,不需要返回返记录集。如Insert、Update或Delete等命令。,8.8 TADOQuery组件的使用,8.8.1 执行不需要返回结果的查询通过调用ExecSQL方法,TADOQuery组件可以执行Insert、Update或Delete等SQL命令,这些命令执行后不会返回数据集。 【例8-3】编写应用程序用于修改数据库dbdemos.mdb中的表employee中的LastName字段。要求输入员工编号和姓,然后根据员工编号修改相应的记录。 【实现步骤】(1) 创建应用程序(2) 定制窗体,8.8 TADOQuery组件的使用,图8-6 设计窗体界面,
22、8.8 TADOQuery组件的使用,表8-8 各组件属性设置,8.8 TADOQuery组件的使用,(3) 编写代码 (4) 运行程序,图8-7 程序运行界面,8.8 TADOQuery组件的使用,8.8.2 执行有返回结果的查询通过调用Open方法或设置Active属性为True,TADOQuery组件可以执行Select命令和存储过程,并返回结果数据集。TADOQuery组件还可使用参数化查询,不需要修改SQL语句,给定不同的参数值,就可以获得不同的查询结果。,本章实训指导,1、掌握TADOConnection组件连接ACCESS数据库和MS SQL数据库服务器的方法。 2、掌握TADOCommand组件执行SQL命令方法。 3、掌握TADODataset组件的用法。 4、掌握TADOQuery组件的用法。 5、用TADODataset组件和TADOQuery组件重写通讯录程序,体会在功能实现上与TADOTable组件有何不同。,