Presentation is loading. Please wait.

Presentation is loading. Please wait.

第8章 ADO组件的使用 本章主要内容: TADOConnection组件的使用 TADOCommand组件的使用

Similar presentations


Presentation on theme: "第8章 ADO组件的使用 本章主要内容: TADOConnection组件的使用 TADOCommand组件的使用"— Presentation transcript:

1 第8章 ADO组件的使用 本章主要内容: TADOConnection组件的使用 TADOCommand组件的使用
 TADODataSet组件的使用  TADOQuery组件的使用

2 8.1 TADOConnection组件概述 TADOConnection组件用于建立数据库的连接,该连接可被多个数据集所共享。
控制数据库的连接 控制服务器的注册 管理事务 为关联的数据集提供数据库连接 将SQL命令发送到数据库中 从数据库中提取数据 8.1.1 TADOConnection 的常用属性 1. Attributes属性   此属性用于设置连接的数据库的自动处理事务的行为,它是TXactAttributes类型的集合,包括两个集合元素。

3 8.1 TADOConnection组件概述 (1)xaCommitRetaining 表示提交一个事务后自动开始一个新的事务;
  (2)xaAbortRetaining 表示回退一个事务的同时将开始一个新的事务。 2. CommandTimeout属性   命令超时属性,用于设置一个命令执行时所能等待的最大时间值。   例如,以下语句将命令执行时间设为120秒。   ADOConnection1.CommandTimeout:=120; 3. Connected属性   标识和数据库的连接是否处于激活状态。 4. ConnectionString属性   ConnectionString(连接字符串)用于指定数据库的连接信息。

4 8.1 TADOConnection组件概述 连接串的标准调用方式为:
  连接串的标准调用方式为: ADOConnection1.ConnectionString := 'Provider=ProviderRef;Remote Server= ServerRef '; 其中,连接串支持的常用参数见下表 。 参数 说明 Provider 数据提供者名称,例如:MSDASQL.1 Password 登录数据库的口令 Persist Security Info 支持安全登录 User ID 登录数据库用户名 Data Source 数据源名称,数据源的设置需要额外的操作。 建议使用连接串生成器创建连接字符串。

5 8.1 TADOConnection组件概述 5. ConnectOptions属性 指定数据库连接是按照同步方式还是异步方式连接。
  指定数据库连接是按照同步方式还是异步方式连接。 6. ConnectionTimeout属性   指定建立连接的最大允许时间。 7. CursorLocation属性   指定数据库游标是采用客户端模式还是服务器端模式。 8. DefaultDatabase属性   表明数据源成功连接后,数据库的路径,这是由数据源自动赋值的。 9. IsolationLevel属性   指定不同事务之间的相互独立的级别。 10. KeepConnection属性   指定如果在没有打开数据集的情况下是否仍然保持数据库的连接。

6 8.1 TADOConnection组件概述 11. LoginPrompt属性
  指定在每次建立连接时是否弹出登录对话框提示用户登录,如果设为False则必须在 ConnectionString中指定登录数据库的用户名和密码。 12. Mode属性   指定连接对数据库的操作权限 。 13. InTransactin属性   表明TADOConnection组件是否处于处理事务的状态中。 14. DataSets属性和DataSetCount属性   DataSets属性包含当前使用这个连接组件的数据集的列表。   DataSetCount属性表示该连接组件关联的数据集数目。

7 8.1 TADOConnection组件概述 8.1.2 TADOConnection 的主要方法 1. BeginTrans方法
  开始启动一个新的事务,必须保证数据连接处于激活状态。 2. Cancel方法   撤消正在建立的到数据库的连接。 3. CommitTrans方法   向数据库提交一个事务,提交成功后,在事务中对数据库所作的修改则写入数据库中,同时一个事务也结束。 4. Execute方法   用来执行SQL命令。 5. GetProcedureNames方法   获取数据库服务器上的存储过程名称。 6. GetTableNames方法   获取数据库中的数据表名称。

8 8.1 TADOConnection组件概述 7. GetFieldNames方法 获取当前连接的数据库中某个指定的数据表的所有字段名。
  获取当前连接的数据库中某个指定的数据表的所有字段名。 8. Open方法   打开一个连接。 9. RollbackTrans方法   撤回一个没有全部执行的事务,事务撤回之后,事务中所作的任何修改都不会写入数据库。 10. Close方法   关闭一个连接。 8.1.3 ADOConnection 的主要事件   ADOConnection组件的主要事件如表8-4所示。

9 8.1 TADOConnection组件概述 表8-4 ADOConnection组件的主要事件 事件 说明 AfterConnect
发生在一个连接建立后 AfterDisconnect 发生在断开连接后 BeforeConnect 发生在连接建立前 BeforeDisconnect 发生在断开连接前 OnBeginTransComplete 发生在开始一个事务时 OnCommitTransComplete 发生在提交事务成功时 OnConnectComplete 发生在连接完成时 OnDisconnect 发生在连接断开时 OnExecuteComplete 发生在一个命令执行后 OnInfoMessage 发生在收到数据库的消息 OnLogin 发生在用户登录数据库的时候 OnRollbackTransComplete 发生在一个事务撤回之后 OnWillConnect 发生在发出一个连接数据请求的时候 OnWillExecute 发生在数据库收到一个 SQL 命令并将要执行的之前

10 8.2 TADOConnection组件的使用 8.2.1 控制服务器的注册
  许多远程数据库服务器包含安全特性以阻止未经授权的访问。通常,这些服务器在允许数据库访问之前要求输入用户名和密码进行注册。 1. 在ConnectionString中加入用户名和密码。 例: procedure TForm1.Button2Click(Sender: TObject); begin adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=pubs;Data Source=qq-1;User ID=sa;password=123456'; adoconnection1.Open(); end;

11 8.2 TADOConnection组件的使用 2. 将用户名和密码作为Open方法的参数。 例:
ADOConnection1.Open('sa', '123456'); 3. 使用OnWillConnect事件 procedure TForm1.ADOConnection1WillConnect(Connection: TADOConnection; var ConnectionString, UserID, Password: WideString; var ConnectOptions: TConnectOption; var EventStatus: TEventStatus); begin UserID:='sa'; password:='123456'; end;

12 8.2 TADOConnection组件的使用 8.2.2 控制关联的数据集
  可以使用DataSets属性与DataSetCount属性一起遍历当前所有激活的数据集。 【例8-1】   编写一个程序,通过TADOConnection组件连接到数据库dbdemos.mdb,并调用GetTableNames方法获取数据库中所有表的名称,显示在一个列表框中。用一个TADOTable组件作为数据集,通过双击列表框中的表名来选取要打开的数据表,并用一个TDBGrigd组件显示表中的记录。 【实现步骤】 (1) 新建应用程序 (2)定制窗体

13 8.2 TADOConnection组件的使用 图8-1 设计窗体界面

14 8.2 TADOConnection组件的使用 表8-5 各组件属性设置 组件名 属 性 属 性 值 说 明 ADOConnection1
属 性 属 性 值 说 明 ADOConnection1 ConnectionString 使用ConnectionString设置对话框设置该属性,连接到数据库dbdemos.mdb。 ADOTable1 Connection 指定使用的数据连接组件。 DataSource1 DataSet 指定使用的数据集为ADOTable1。 DBGrid1 DataSource 为表格指定数据源。 ListBox1 Font.size 12 设定列表框中文字显示大小。 Font.Name Arial 设定列表框中文字显示字体。

15 8.2 TADOConnection组件的使用  (3) 编写代码  (4) 运行程序 图8-2 程序运行界面

16 8.3 TADOCommand组件概述   TADOCommand组件主要用于运行一些数据定义语言(DDL)的SQL命令,或者运行一个没有返回结果集的存储过程,对于有返回结果集的SQL语句,则最好使用TADODataSet、TADOQuery或TADOStoredProc组件,尽管 TADOCommand 组件的Execute 方法可以返回一个结果集,但却是通过另一个ADO数据集组件来使用该记录集。 ADOCommand的主要属性 1. CommandText属性   指定要执行的SQL命令。   CommandText编辑器是专门用来为ADO组件编写SQL 命令的。 2. CommandType属性   指定要执行的命令的种类。

17 8.3 TADOCommand组件概述 CommandType的选项及说明 3. Connection属性
cmdUnknown CommandText中的命令类型是未知的 cmdText CommandText中是一个SQL语句 cmdTable CommandText中指定的是一个表的名称 cmdStoredProc CommandText中指定的是一个存储过程的名称 cmdFile CommandText中指定的是保存数据集的文件名 cmdTableDirect CommandText中指定的是表的名称,并返回所有的列 3. Connection属性   指定所使用的数据连接组件的名称,即TADOConnection 组件的名称。 4. ConnectionString属性   ConnectionString(连接字符串)用于指定数据库的连接信息。

18 8.3 TADOCommand组件概述 5. CammandTimeout属性
  CammandTimeout属性是一个整型数,指定执行一个命令的最大允许时间,默认值是30秒。在TADOCommand组件通过TADOConnection 组件与数据连接的情况下,如果同时两者指定了CammandTimeout属性,则优先考TADOCommand组件中设置的值。 6. ExecuteOption属性   指定调用Execute方法时的命令特征。 7. ParamCheck属性   指定在运行时如果SQL命令被改变,是否需要重建TADOCommand组件的参数列表。 8. Parameters属性   在 SQL 命令中或在存储过程中需要传递参数的时候才需要设置这个值,并且,在命令类型(CommandType)指定为cmdText或 cmdStoredProc时,参数才有效。

19 8.3 TADOCommand组件概述 8.3.2 TADOCommand 的主要方法 1. Cancel方法 中止一个正在执行的的命令。
  中止一个正在执行的的命令。 2. Execute方法   执行TADOCommand 组件所包含的命令。

20 8.4 TADOCommand组件的使用   TADOCommand组件封装了ADO技术中的Command对象,通过它可以在数据库上执行SQL语句。在程序中使用TADOCommand组件,需要完成以下步骤:   (1)使用Connection属性连接到一个TADOConnetion组件或使用ConnetionString属性直接连接数据库;   (2)设置CommandType属性,指定CommandText属性中包括命令类型;   (3)为CommandText属性设置命令文本,可以是SQL语句、表名、存储过程名;   (4)调用Excute方法执行命令。

21 8.5 TADODataSet组件概述   TADODataSet可通过SQL命令从一个数据表或者是多个数据表获取数据集,也可以直接获取整个数据表的数据,它还可以执行存储过程,也可以从磁盘文件获取数据。 8.5.1 TADODataSet 的主要属性 1. CommandText   CommandTex属性指定数据集合中所包含的命令,可以是SQL语句、一个表名或者一个存储过程名。 常用的调用形式为: with ADODataSet1 do begin Close; CommandType := cmdText; CommandText := 'SELECT * FROM Customer'; Open; end;

22 8.5 TADODataSet组件概述 2. DataSource 设置数据源用来自另一个数据集的字段值去自动填充查询的参数。
  设置数据源用来自另一个数据集的字段值去自动填充查询的参数。 8.5.2 TADODataSet组件的重要方法   TADODataSet的方法与前面介绍TADOTable的属性一样。

23 8.6 TADODataSet组件的使用 8.6.1 TADODataSet组件的数据集类型
  TADODataSet是一个多用途的数据集,通过设置CommandType和CommandText属性,它可以作为表类型、查询类型、存储过程类型和文件类型的数据集使用。 1. 表类型数据集   作为表类型数据集时,TADODataSet从单一的数据表中获取所有行和列。 2. 查询类型数据集   TADODataSet也可以执行SQL查询命令以获取数据集,使用时需要先设置CommandType属性为cmdText,然后在CommandText属性中设置要执行的SQL命令。 3. 存储过程类型数据集   TADODataSet需要指定所执行的存储过程的名称。

24 8.6 TADODataSet组件的使用 4. 文件类型数据集
  使用这种类型数据集,需先设置CommandType属性为cmdFile,然后在CommandText属性中设置要打开的文件名。 【例8-2】   在数据库dbdemos.mdb中,表customer存储的是顾客信息,表orders存储的是订单信息。编程实现能方便地通过选定顾客来浏览其订单信息。   将TADODataset组件的Parameters属性与DataSource属性配合使用,可以建立主/从关系的数据集。 【实现步骤】   (1) 建立应用程序   (2)定制窗体

25 8.6 TADODataSet组件的使用 图8-4 设计窗体界面

26 8.6 TADODataSet组件的使用 表8-7 各组件属性设置 组件名 属 性 属 性 值 说 明 ADOConnection1
属 性 属 性 值 说 明 ADOConnection1 ConnectionString 使用ConnectionString设置 对话框设置该属性,连接到 数据库dbdemos.mdb。 ADODataset1 Connection 指定使用的数据连接组件。 CommandType cmdTable 说明CommandText属性的值 是表的名称 CommandText Customer 指定打开的数据表名 Active True 打开数据集。 DataSource1 DataSet 指定使用的数据集。 DBGrid1 DataSource 为表格指定数据源,显示主 表。 ADODataset2 cmdText 说明CommandText属性值是 SQL语句 select * from orders where CustNo=:CustNo 添加SQL查询语句

27 8.6 TADODataSet组件的使用 组件名 属 性 属 性 值 说 明 ADODataset2 DataSource
属 性 属 性 值 说 明 ADODataset2 DataSource DataSource1 指定与主表相连的数据源 Parameters.item.Name CustNo 与主表相关联的字段名 Parameters.item. DataType ftInteger 字段数据类型 Active True 打开数据集。 DataSource2 DataSet 指定使用的数据集 DBGrid2 为表格指定数据源。 TLabel1 Caption 主表 TLabel2 从表中显示的内容由主表中的CustNo字段控制

28 8.6 TADODataSet组件的使用 (3) 运行程序 图8-5 程序运行界面

29 8.7 TADOQuery组件概述   TADOQuery 组件借助于SQL语言的的强大功能访问多个数据表,可以实现数据浏览、修改和删除等操作,而且TADOQuery组件也可以实现参数查询。   通常情况下,使用TADOQuery组件是为了从数据集中查询一部分字段或记录,也可以使用INSERT、DELETE、UPDATE、ALTER TABLE等SQL命令实现数据库的更新、插入和删除记录的操作。 8.7.1 主要属性 1. SQL属性   SQL属性是TStrings类型的变量,包含了TADOQuery 组件要执行的SQL命令。   请看下面的例子。

30 8.7 TADOQuery组件概述 with ADOQuery1 do begin //重新写入SQL的时候 必须关闭原来的查询
Close; SQL.Clear; //清除原来的SQL命令 SQL.Add('SELECT EmpNo, LastName, FirstName, HireDate'); //设置新SQL命令 SQL.Add('FROM Employee'); Open; //执行有返回结果的SQL命令,获得想要的查询结果. end;

31 8.7 TADOQuery组件概述 2. Parameters属性
  Parameters属性中保存了SQL属性中的SQL命令中执行所需的参数。 3. RowsAffected属性   返回最近一次查询所影响的记录数。 8.7.2 主要方法 1. Open方法   Open方法用于执行SQL属性所指定的SQL命令,要返回记录集。 2. ExecSQL方法   ExecSQL方法用于执行SQL属性所指定的SQL命令,不需要返回返记录集。如Insert、Update或Delete等命令。

32 8.8 TADOQuery组件的使用 8.8.1 执行不需要返回结果的查询
  通过调用ExecSQL方法,TADOQuery组件可以执行Insert、Update或Delete等SQL命令,这些命令执行后不会返回数据集。 【例8-3】   编写应用程序用于修改数据库dbdemos.mdb中的表employee中的LastName字段。要求输入员工编号和姓,然后根据员工编号修改相应的记录。 【实现步骤】   (1) 创建应用程序   (2) 定制窗体

33 8.8 TADOQuery组件的使用 图8-6 设计窗体界面

34 8.8 TADOQuery组件的使用 表8-8 各组件属性设置 组件名 属 性 属 性 值 说 明 ADOConnection1
属 性 属 性 值 说 明 ADOConnection1 ConnectionString 使用ConnectionString设置对话框设置该属性,连接到数据库dbdemos.mdb。 ADOTable1 Connection 指定使用的数据连接组件。 TableName employee 指定打开的数据表名 Active True 打开数据集 DataSource1 DataSet 指定使用的数据集为ADOTable1。 DBGrid1 DataSource 为表格指定数据源。 ADOQuery1 btnUpdate Caption UpDate Label1 请输入员工编号: Label2 请输入员工LastName: edtNo Text 为空 edtLastname

35 8.8 TADOQuery组件的使用 (3) 编写代码 (4) 运行程序 图8-7 程序运行界面

36 8.8 TADOQuery组件的使用 8.8.2 执行有返回结果的查询
  通过调用Open方法或设置Active属性为True,TADOQuery组件可以执行Select命令和存储过程,并返回结果数据集。TADOQuery组件还可使用参数化查询,不需要修改SQL语句,给定不同的参数值,就可以获得不同的查询结果。

37 本章实训指导 1、掌握TADOConnection组件连接ACCESS数据库和MS SQL数据库服务器的方法。
2、掌握TADOCommand组件执行SQL命令方法。 3、掌握TADODataset组件的用法。 4、掌握TADOQuery组件的用法。 5、用TADODataset组件和TADOQuery组件重写通讯录程序,体会在功能实现上与TADOTable组件有何不同。


Download ppt "第8章 ADO组件的使用 本章主要内容: TADOConnection组件的使用 TADOCommand组件的使用"

Similar presentations


Ads by Google