《数据库应用技术――Delphi应用系统开发》-第六章

上传人:我*** 文档编号:136585560 上传时间:2020-06-29 格式:PPT 页数:69 大小:533.50KB
返回 下载 相关 举报
《数据库应用技术――Delphi应用系统开发》-第六章_第1页
第1页 / 共69页
《数据库应用技术――Delphi应用系统开发》-第六章_第2页
第2页 / 共69页
《数据库应用技术――Delphi应用系统开发》-第六章_第3页
第3页 / 共69页
《数据库应用技术――Delphi应用系统开发》-第六章_第4页
第4页 / 共69页
《数据库应用技术――Delphi应用系统开发》-第六章_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《《数据库应用技术――Delphi应用系统开发》-第六章》由会员分享,可在线阅读,更多相关《《数据库应用技术――Delphi应用系统开发》-第六章(69页珍藏版)》请在金锄头文库上搜索。

1、第6章 数据库操作,本章学习要点 l 学习数据库组件的作用及其设计 l 学习ADO组件的使用方法 l 掌握Delphi中SQL编程 l 掌握字段对象的使用方法 l 掌握数据库操作,2020/6/29,2,数据库是数据表的集合(特指关系型数据库)。因此,数据库应用程序就是处理各种数据表的应用程序。这些数据表以行(记录)和列(字段)的形式来组织信息。它们能够用一些简单的关系运算符进行操作。设计一个数据库应用程序时,必须完整地了解数据的结构,才能设计出一个合适的界面来显示数据库中的数据,并且允许用户输入新的数据或者修改已有的数据。Delphi集成开发工具中包括了创建数据库应用程序的所有通用元素,可以

2、方便地实现诸如数据库查询这样的数据库功能。,2020/6/29,3,6.1 数据库组件,Delphi使用VCL类将数据库引擎BDE(Borland Database Engine)封装成对象,为数据库应用程序开发人员提供一致的访问接口。一个数据库应用程序在逻辑上通常由两部分组成,即数据访问链路和用户界面。Delphi的数据库组件也相应地包括数据访问组件和数据控制组件,它们分别实现数据访问链路和用户界面的功能。 Delphi提供的可使用BDE数据库引擎访问数据库的组件可以分成下面的3类。 l BDE组件:该组件集提供了以BDE方式访问数据库的数据库表和查询等数据集组件。 l 数据访问(Data

3、Access)组件:该组件集提供了数据源(DataSource)等连接组件。 l 数据控制(Data Controls)组件:该组件集用来浏览和编辑数据,它们为用户使用数据库提供接口。,2020/6/29,4,组件面板中的Data Access、Data Controls和BDE页中有不同的数据库对象,其中Data Access和BDE页中的对象为非可视化对象,而Data Controls页中包含的为可视化对象。 6.1.1 数据库引擎组件页简介 BDE数据集部件包含了用于各种BDE数据引擎的数据集构件,这些构件封装了数据库连接、数据表格、数据查询等特性。如图6-1所示。 图6-1 BDE数据

4、集部件 当要创建一个数据库应用时,首先在窗体中选择一个BDE数据集部件,然后为BDE数据集部件设置有关的属性,说明要访问的数据库、数据表以及表中的记录等,BDE数据集部件为数据控制部件与数据源建立了一条通道。,2020/6/29,5,表6-1 BDE数据集部件,2020/6/29,6,需要指出的是在绝大多数数据库应用程序中,一般都是使用数据集部件Table、Query或StoredProc与磁盘上的数据库进行连接,用DataSource组件连接数据控制部件和数据集部件,当然用户也可以自定义数据集部件,用于数据库应用当中,Table、Query和StoredProc部件中都包含一个不可见的Fie

5、lds,Fields是一个串列表,它对应于数据库表或一个查询结果的列表字段。 6.1.2 Table组件 Table组件是Delphi数据库编程中要经常使用的最重要的部件之一,是数据库应用程序访问数据库时必须使用的数据集组件之一。Table组件可以访问数据库表格中的每一行和每一列。它既可以访问本地的数据库如(Paradox、dBASE、Access、Foxpro),还可以访问远程数据库如InterBase、Sybase和SQL Server。它不但可以显示和编辑表格的所有行和所有列,而且可以选择一定范围内的行,或者用过滤技术检索出其中一部分行,可以搜索记录,复制、换名或删除一个表格。,2020

6、/6/29,7,利用Table组件程序员甚至可以不需要编写任何程序便可对数据库进行访问,在一个应用程序窗体中放置一个Table组件的过程如下: l 在组件选择板上选择Data Access页。 l 单击Table图标。 l 在窗体内单击鼠标,获得一个Table组件。 l 为Table组件设置有关的属性。 DatabaseName属性指定要访问的数据库所在的路径名,路径名可以用别名来表示。 TableName属性指定要访问数据库中具体的数据库表。 Acitve属性设置为True时,表示打开要访问的数据库表;设置为False时,暂时不打开要访问的数据库表。,2020/6/29,8,l 指定字段显示

7、的顺序。 l 为每个字段指定一个用于显示的字符串。 l 为字段增加合法性检验。 l 为显示的需要还可以建立新的字段(如可计算的字段),具体的使用方法见6.5节的内容。 Table组件是Delphi所提供的对数据库最简单而快捷的访问方法。对于大多数本地数据库和简单的远程数据库应用程序,一般使用Table组件,当需要使用SQL查询语言或访问大型的SQL服务器时,则通常使用Query组件。 下面通过一个简单的数据库应用程序讲述Table组件的用法。例子用于查询雇员数据库,程序是通过输入雇员的编号后查询出该雇员的有关信息,首先新建一个应用程序(Application),放置一个Table组件、一个Da

8、taSource组件、三个Label组件和两个Button组件,按表6-2的要求调整组件的一些关键属性,实例程序的设计界面如图6-2所示。,2020/6/29,9,图6-2 程序设计界面 表6-2 组件的属性设置,2020/6/29,10,单击“”按钮Button1的事件处理过程代码如下: procedure TForm1.Button1Click(Sender: TObject); begin with table1 do begin label3.Caption :=; indexfieldnames:=empno; setkey; /调用table1的setkey方法把与表对应的数据集设

9、置成查询状态 if edit1.Text = then showmessage(请输入查询雇员号) else table1.FieldByName(empno).AsString :=edit1.Text ; if gotokey then /调用table1的gotokey方法查找符合条件的记录 begin label3.Caption :=查找成功; edit2.Text:=table1.fieldbyname(lastname).AsString+-+table1.fieldbyname(firstname).AsString; /标签姓名后的文本框显示雇员的最后一个名字和第一个名字,中

10、间用减号格开,2020/6/29,11,memo1.Lines0:=雇员号:+ table1.fieldbyname(empno).AsString ; memo1.Lines1:=姓名:+ table1.fieldbyname(lastname).AsString+-+table1.fieldbyname(firstname).AsString; end else begin edit2.Text :=此人不存在; label3.Caption :=查找失败; memo1.Lines0:=此人不存在; memo1.Lines1:=; end; end; end; 程序的执行结果如图6-3所示

11、。,2020/6/29,12,图6-3 程序的执行结果 6.1.3 Query组件 Query组件提供一种使用SQL语句进行数据访问的方法。该方法可以指定一个表中需要使用的记录集合或列集合,也可以指定需要同时访问的多个数据库表。Query组件是程序员使用SQL语句开发数据库应用程序的有力工具,因为使用SQL语言,可以非常方便灵活地对一个或多个数据库表中的记录进行访问,所以利用Query可以查询本地的数据库如Paradox和dBASE数据库系统中的数据,还可以使用Query组件对一个远程的数据库SQL服务器进行访问,建立客户/服务模式的应用程序,SLMIS为典型的客户端/服务器模式的应用系统。,

12、2020/6/29,13,SQL属性:指定对数据库表进行访问的SQL语句,它可以是一条查询语句也可以是一条修改语句或插入语句等。在对象浏览器上,单击SQL属性时,会打开一个字符串编辑器供程序设计者输入SQL语句。注意:在Query组件中,不是用TableName属性来指定要访问的数据库中的数据库表,而是在SQL属性中,通过SQL语句静态地指定将要访问的数据库表。SQL属性也可以在程序中动态地设置,程序员进行设计时常常是采用动态设置的方法。 下面举一个例子来说明如何使用 Query组件进行动态 SQL语句的程序设计。 本例将创建一个供用户使用的SQL编辑器界面,当用户输入SQL语句后如果没有语法

13、错误,可以直接得到SQL执行的结果。实例程序的设计界面如图6-4所示。设计界面中各个组件的属性如表6-3所示。由于设置Query的DatabaseName属性时将其设置为DBDEMOS,所以设计的这个SQL程序编辑器只能对DBDEMOS中的数据库表进行操作。,2020/6/29,14,图6-4 程序设计界面 表6-3 组件的属性设置,2020/6/29,15,单击“”按钮Button1的事件处理过程代码如下: procedure TForm1.Button1Click(Sender: TObject); begin try Query1.Close; Query1.SQL.Clear; Que

14、ry1.SQL.Add(memo1.Text); Query1.Open; except on edatabaseerror do Query1.execsql end; end; 在上面的代码中,使用了“异常”处理结构进行编程。“异常”处理结构包括两种格式:TryFinally格式和TryExcept格式。其中TryExcept格式如下。,2020/6/29,16,try except on 异常类型1 do 处理方式1; on 异常类型2 do 处理方式2; on 异常类型3 do 处理方式3; end; 如果在程序代码段1中出现了异常,系统将转向Except部分寻找解决办法。如果在Exc

15、ept部分给出了此种异常类型的解决分支,就执行该分支中的程序,否则就按缺省方式处理。,2020/6/29,17,图6-5 执行SQL编辑器 在Query组件中,SQL查询语句使用Open方法执行,而其他类型的SQL语句(例如Insert、Delete、Update等)需要使用ExecSQL方法执行。如果在程序中只使用Open方法执行SQL语句,在使用程序执行非查询的SQL语句的时候,系统将产生Edatabaseerror异常。 使用TryExcept异常结构,将ExecSQL方法置于Except部分,就可以使程序适用于两种不同情况的需要。 下面给出单击“ ”按钮Button2的事件处理过程。,

16、2020/6/29,18,procedure TForm1.Button2Click(Sender: TObject); begin memo1.Clear ; Query1.Close; end; 单击“”按钮时,备注框中的内容将被清除,同时 Query1组件被关闭,窗体中的数据控制组件DBGrid1将处于空白状态。 这样一个简单的SQL编辑器的设计就完成了。该例子执行之后如图6-5所示。 6.1.4 StoredProc组件 在数据库应用程序中,有时候需要对大量的记录进行操作,此时应用程序的效率往往受到影响。存储过程正是用来解决这一问题的,因为存储过程是在数据库服务器上,所以它的执行效率比较高,从而可以改善应用程序的性能。,2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号