预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共69页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章数据库操作 数据库是数据表的集合(特指关系型数据库)。因此,数据库应用程序就是处理各种数据表的应用程序。这些数据表以行(记录)和列(字段)的形式来组织信息。它们能够用一些简单的关系运算符进行操作。设计一个数据库应用程序时,必须完整地了解数据的结构,才能设计出一个合适的界面来显示数据库中的数据,并且允许用户输入新的数据或者修改已有的数据。Delphi集成开发工具中包括了创建数据库应用程序的所有通用元素,可以方便地实现诸如数据库查询这样的数据库功能。 6.1数据库组件组件面板中的DataAccess、DataControls和BDE页中有不同的数据库对象,其中DataAccess和BDE页中的对象为非可视化对象,而DataControls页中包含的为可视化对象。 6.1.1数据库引擎组件页简介 BDE数据集部件包含了用于各种BDE数据引擎的数据集构件,这些构件封装了数据库连接、数据表格、数据查询等特性。如图6-1所示。 图6-1BDE数据集部件 当要创建一个数据库应用时,首先在窗体中选择一个BDE数据集部件,然后为BDE数据集部件设置有关的属性,说明要访问的数据库、数据表以及表中的记录等,BDE数据集部件为数据控制部件与数据源建立了一条通道。表6-1BDE数据集部件需要指出的是在绝大多数数据库应用程序中,一般都是使用数据集部件Table、Query或StoredProc与磁盘上的数据库进行连接,用DataSource组件连接数据控制部件和数据集部件,当然用户也可以自定义数据集部件,用于数据库应用当中,Table、Query和StoredProc部件中都包含一个不可见的Fields,Fields是一个串列表,它对应于数据库表或一个查询结果的列表字段。 6.1.2Table组件 Table组件是Delphi数据库编程中要经常使用的最重要的部件之一,是数据库应用程序访问数据库时必须使用的数据集组件之一。Table组件可以访问数据库表格中的每一行和每一列。它既可以访问本地的数据库如(Paradox、dBASE、Access、Foxpro),还可以访问远程数据库如InterBase、Sybase和SQLServer。它不但可以显示和编辑表格的所有行和所有列,而且可以选择一定范围内的行,或者用过滤技术检索出其中一部分行,可以搜索记录,复制、换名或删除一个表格。利用Table组件程序员甚至可以不需要编写任何程序便可对数据库进行访问,在一个应用程序窗体中放置一个Table组件的过程如下: l在组件选择板上选择DataAccess页。 l单击Table图标。 l在窗体内单击鼠标,获得一个Table组件。 l为Table组件设置有关的属性。 DatabaseName属性指定要访问的数据库所在的路径名,路径名可以用别名来表示。 TableName属性指定要访问数据库中具体的数据库表。 Acitve属性设置为True时,表示打开要访问的数据库表;设置为False时,暂时不打开要访问的数据库表。l指定字段显示的顺序。 l为每个字段指定一个用于显示的字符串。 l为字段增加合法性检验。 l为显示的需要还可以建立新的字段(如可计算的字段),具体的使用方法见6.5节的内容。 Table组件是Delphi所提供的对数据库最简单而快捷的访问方法。对于大多数本地数据库和简单的远程数据库应用程序,一般使用Table组件,当需要使用SQL查询语言或访问大型的SQL服务器时,则通常使用Query组件。 下面通过一个简单的数据库应用程序讲述Table组件的用法。例子用于查询雇员数据库,程序是通过输入雇员的编号后查询出该雇员的有关信息,首先新建一个应用程序(Application),放置一个Table组件、一个DataSource组件、三个Label组件和两个Button组件,按表6-2的要求调整组件的一些关键属性,实例程序的设计界面如图6-2所示。 图6-2程序设计界面 表6-2组件的属性设置单击“”按钮Button1的事件处理过程代码如下: procedureTForm1.Button1Click(Sender:TObject); begin withtable1do begin label3.Caption:=''; indexfieldnames:='empno'; setkey;//调用table1的setkey方法把与表对应的数据集设置成查询状态 ifedit1.Text=''then showmessage('请输入查询雇员号') elsetable1.FieldByName('empno').AsString:=edit1.Text; ifgotokeythen//调用table1的gotokey方法查找符合条件的记录 begin labe