本章要点:
数据库应用程序设计基础
数据库桌面 ( Database Desktop) 工具的使用
BDE组件中的 Table组件的使用
DataSource组件
数据控制组件第 11章 数据库应用基础
11.1 数据库应用程序设计基础数据库应用在人们的工作中起到了越来越重要的作用,如企业信息管理系统、人事管理系统和学校的学籍管理系统等这些都是数据库应用程序。现在很多软件开发人员都在运用各种工具开发数据库应用程序,
其中 Delphi 7.0语言是广大程序员喜爱的开发数据库应用程序的编程工具之一。
11.1.1 数据库系统概述数据库系统主要由三大部分组成:数据库管理系统 ( DBMS),
数据库应用程序,数据库 ( 是按一定结构组织在一起的相关数据的集合 ) 。 DBMS是专门负责组织和管理数据信息的程序,是数据库系统的核心组成部分 。 用户通过数据库应用程序能够获取,显示和更新由
DBMS存储的数据,通过应用程序提供的管理界面方便地管理数据库中的数据 。
数据库 ( DataBase) 是由一个或多个数据表所组成的,而每一个数据表 ( Table) 是有若干列 ( Columns) 记录 ( Record) 组成的 。 而记录是信息处理的基本单位,且每条记录在结构上是相同的 。
11.1.2 Delphi7.0数据库特性和支持的数据库种类 (1)
Delphi 7.0是目前开发数据库应用程序的最强有力的工具之一 。 Delphi
7.0结合了传统的编程语言 Object Pascal和数据库语言的强大功能,它既可以用于传统的算术编程又可以用于数据库编程,特别是 Delphi 7.0具有了强大的开发数据库的功能,利用 Delphi 7.0数据库开发工具,程序员几乎不用编写任何代码就可以创建一个简单的数据库应用系统 。
Delphi 7.0应用程序能存取各类数据 —— 文件服务器或本地的桌面数据表及远程数据库 。 Delphi 7.0程序通过 BDE( Borland Database Engine)
或者 ADO( Active Data Object) 来访问各种数据源 。 其中 BDE是 Borland
公司开发的数据库引擎,它的基本思想是把应用程序开发接口部分与连接数据库的部分分开 。 这样用户就可以按照自己的意愿把应用程序前端部分代码得编写通用,而数据源改变也不用重新编码,只要重新设置 BDE就以了 。 ADO数据访问接口是 Microsoft公司处理数据库信息的最新技术 。 它是一种 ActiveX对象,采用被成为 OLE DB的数据访问模式,是数据访问对象
DAO,远程数据对象 RDO和开放数据库互联 ODBC三种方式的扩展 。
ADO已成为访问数据库的新标准 。
11.1.2 Delphi7.0数据库特性和支持的数据库种类 (2)
Delphi 7.0数据库应用程序通过 BDE或者 ADO获取它们所需的数据 。
Delphi 7.0所支持的数据库种类一般包括以下几种 。
1,dBase数据库(,DBF)
2,2,Paradox数据库
3,3,ASCII文件(,TXT)
4,本地 InterBase服务器(,GDB)
5,Access数据库(,MDB)
6,各种数据库服务器
7,可以通过 ODBC与其他数据库建立链接数据库分为本地数据库和远程数据库两种。例如 Paradox,dBase、
FoxPro和 Access等,这些数据库被称为本地数据库,一般用于编写单层的数据库应用程序,即本地数据库应用程序。另一种是远程数据库服务器,如
InterBase,Oracle,Sybase,Informix,Microsoft Sql Server和 DB2等,一般用于编写多层次的数据库应用程序,即 C/S(客户 /服务器 Client/Server)数据库应用程序和多层数据库应用程序。
11.2 创建第一个 Delphi 7.0数据库应用程序建立一个数据库应用程序的最终目标是为了给用户提供一个满足长期使用需求的软件产品,因此要开发一个成功的数据库应用程序,关键之一是要进行需求分析,围绕用户的需求来开发程序。数据库应用程序的开发一般包括以下三个步骤。
一个完整的数据库应用程序必须包括数据库和应用程序两部分 。 数据库用来存放用户的数据,而应用程序则是用来维护数据库中的数据,包括增加,删除,修改,查询等操作 。 本节将以学生档案管理程序为例,说明如何来创建一个完整的数据库应用程序,包括数据库的建立和应用程序的设计 。
11.2.1 Delphi 7.0数据库应用程序建立步骤
11.2.1 Delphi 7.0数据库应用程序建立步骤
1,系统分析和设计这一步实际上是最重要的一步,要深入了解用户需求,也就是说要掌握用户使用该软件的具体要求有哪些,这就是所谓的需求分析。这一步不仅包括数据库结构的设计也包括应用程序界面的设计。
2,应用程序的实现应用程序的实现主要是通过 Delphi 7.0提供的工具和组件及 Object
Pascal语言实现在系统分析与设计阶段的设想功能,并边编码边调试。
在后面本书将会重点讲到如何用 Delphi 7.0提供的各种数据库组件来编写相应程序代码。
3,程序的运行和维护使用 Delphi 7.0开发工具完成程序编码后,就要对该数据库应用程序进行严格的测试,以让程序尽可能的稳定。并且在用户使用时,用户还会再提出一些新的需求和建议,这时还要对应用程序做一定的修改,
使其满足用户的需求。
11.2.2 Delphi 7.0数据库桌面 (1)
数据库桌面( Database Desktop)是 Delphi 7.0中提供的最简单的数据库管理工具,通过它可以实现数据库的建立、维护和查询等操作。
可以通过 Delphi 7.0主菜单工具 Tools菜单中的 Database Desktop选项来打开
Database Desktop管理工具,或者通过操作系统的开始菜单中 Delphi 7.0启动图标组打开它。 Database Desktop数据操作窗体如图 11-2所示。
1,创建数据表在 Database Desktop窗口中选择 File/New/Table
菜单项,并在弹出的对话框中选择相应数据库类型,
例如,要建立 Paradox数据库,则选择 Paradox7,
如图 11-3所示。 图 11-2 Database
Desktop窗口图 11-3 创建数据表单击 OK按钮后出现创建数据表的对话框,如图
11-4所示窗体。可以在对话框中设置数据表的结构,
包括各字段的名称( Field Name)、字段类型
( Type)、字段宽度(占用字节 Size)及是否设置关键字( Key)等。
假设要创建一张如图 11-1中所示一样的学生档案
11.2.2 Delphi 7.0数据库桌面 (2)
数据表,且表名为 student,字段属性如表 11-1所示。详见本教程 P192页按照表中字段属性要求,在图 11-4显示的创建数据表的对话框中分别输入各字段的名称( Field Name)、字段类型( Type)、字段宽度( Size)以及是否设置关键字( Key)等字段属性。这里输入字段名直接在 Field
Name列中输入。输入字段类型( Type)时,要鼠标右击,
这时会弹出菜单进行选择相关类型。如图 11-5所示。
( 1) Alpha,字符串型
( 2) Number:数字型
( 3) Date:日期型
( 4) Logical:逻辑型
( 5) Memo:备注型
( 6) Graphic:图片型图 11-4 创建数据表对话框图 11-5 字段类型快捷菜单
11.2.2 Delphi 7.0数据库桌面 (3)
( 1)建立主索引的方法在图 11-4 创建数据表对话框中,将光标移到要建立主索引字段的 Key列下面,双击鼠标左键或者按空格键即可,这时在该列中会出现,*”,则表示设定关键字成功。这里设定“学号”为主关键字,即主索引,因此只要在该字段的 Key列下面双击,即会出现一个,*”,定义关键字操作完成。
( 2)建立次索引(辅助索引)的方法在图 11-4 创建数据表对话框中,通过右上方的 Table
Properties(表属性)下拉菜单中选择 Secondary Indexes
(次索引)选项,再单击 Define定义按钮进入次索引定义窗口。在次索引定义窗口中,可从左边的 Fields(字段)
列表框中选择要建立次索引的字段,双击或者单击并左右图 11-4 创建数据表对话框图 11-5 字段类型快捷菜单另外还要给数据表建立索引,即定义关键字。索引分为主索引和次索引两种。主索引关键字字段中的数据必须惟一,
而且每张数据表中只能建立一个主索引。而次索引则没有这个限制,在次索引字段中数据允许重复,且可以建立多个次索引。
11.2.2 Delphi 7.0数据库桌面 (4)
方向移动按钮,将字段添加到右边的 Indexed Fields列表框中,可以选择多个,
然后单击 OK按钮。这时在弹出的 Save Index As对话框中输入索引文件名,
然后单击 OK按钮完成次索引的建立。
具体字段设置完成以后效果如图 11-6所示。单击 Save As… 按钮将设置完成的表保存到 D:\Demos\stu_data目录下,数据表名称为 Student.db。
图 11-6 字段设置
2,修改数据表结构如果要修改某张表的结构,选择 File/Open/Talbe
菜单项打开数据表 Student.db,然后选择
Table/Restructure选项,就可以修改该表结构。
3,数据记录的输入、修改和删除打开数据表,选择 Table/Edit菜单项,进入数据记录编辑状态就可以添加、修改和删除记录。要插入记录则可以选择 Record/Insert选项,或者按下
Insert键即可在当前记录前插入一条记录;按下
Ctrl+Delete键,可以删除当前记录。
在编辑窗体中输入相关记录,显示窗口如图 11-
7所示。
图 11-7 数据记录编辑窗口
11.2.2 Delphi 7.0数据库桌面 (5)
4,数据库别名管理
Delphi 7.0中的数据库访问组件很多时候是通过数据库别名( Alias)来访问数据源的。数据库别名是一种逻辑数据库名,每一个数据库别名都指向一个确定的物理数据源。 Delphi 7.0数据库组件就是通过这种逻辑的数据库别名代替物理数据库名的方法来访问物理数据库当中的数据,这样程序员就不必考虑数据库的物理位置,大大增强了数据的独立性和程序的通用性。
在 Database Desktop中提供了管理数据库别名的功能,通过 Tools/Alias
Manager菜单项进入别名管理操作窗口,如图 11-8所示。
图 11-8 数据库别名管理窗口一般在建立数据库后,要给存放数据库文件的文件夹建立一个数据库别名,以供 Delphi 7.0控件进行访问。
这里要给刚才新建的数据表 student.db所在的文件路径建立数据库别名 stu_data。
11.2.3 使用数据库窗体向导设计数据库应用程序 (1)
数据库窗体向导 ( Database Form Wizard) 是 Delphi 7.0自带的自动生成数据库维护窗体的工具 。 下面介绍如何用数据库窗体向导建立一个数据库应用程序,来管理刚才通过 Database Desktop建立的数据库表文件 student.db中的数据 。 步骤如下:
新建一个新工程项目 Project1,选择主菜单中的
database(数据库)菜单下的 Form wizard(数据表向导)选项,弹出数据库窗体向导窗口 Database Form
Wizard,如图 11-9所示。在 Form Options框架中选择
Create a simple form选项,即创建一个简单的表。
(第二个选项 Create a master/detail form是用来生成由主从表组成的维护窗体的。);在 DataSet Options
框架中选择 Create a form using Ttable objects选项,
即用 Ttable对象创建一个表,生成的窗体中用 TTable控件来访问数据库。(如果选择第二项则是用 Tquery组件访问数据库。)然后单击 Next按钮,进入下一步向导。
图 11-9 数据库窗体向导 Database
Form Wizard
11.2.3 使用数据库窗体向导设计数据库应用程序 (2)
在图 11-11中选择要维护的数据表 student.db中的记录。在左边的
,Avaliable Fields”可用字段列表框中选择要维护的字段,然后单击 按钮,
将选中的字段添加到右边的列表框中;单击 按钮将添加全部字段到右边列表框中。这里将所有的字段都添加过去。利用 按钮和按 钮可以对已添加到右边列表框中的字段进行排序。单击 Next按钮,出现图 11-12所示界面。
在图 11-12中选择字段在窗体中的显示方式。有三种显示方式可以选择。
水平( Horizontal):水平方向排列;垂直( Vertical):垂直方向排列;
表格( Grid):以表格的方式显示。
选择相应方式后会在左边的预览窗口中显示其排列效果。在这里,选择垂直方式( Vertical)排列,然后单击 Next按钮。
图 11-10 指定数据表 图 11-11 选择字段 图 11-12 选择字段显示方式
11.2.3 使用数据库窗体向导设计数据库应用程序 (3)
在图 11-13中选择字段说明标签的位置,有两种方式。
Left:标签出现在字段信息的左方;
Top:标签出现在字段信息的上方。
选择 Left选项,然后单击 Next按钮。
在图 11-14完成数据库表向导窗口中设定 Grenerate
a main form复选框,表示生成的数据库表窗体为当前程序项目的主窗体,即运行时首先显示的窗体。这里将该选项选中,然后单击 Finish按钮,这时会生成图
11-15数据库表窗体。
图 11-13 选择字段说明标签定位置图 11-14 完成数据库表向导图 11-15 生成的数据库表窗体以上例子通过 Delphi 7.0提供的数据库窗体向导( Form Wizard)建立一个数据库应用程序。但是
Delphi 7.0提供了更为强大的组件来开发数据库应用程序,Delphi 7.0数据库组件的使用将在下一节内容中详细地进行介绍。
11.3 数据库组件在 Delphi 7.0中设计数据库应用程序是通过组件来完成的。 Delphi 7.0中用来开发数据库程序的组件十分丰富。在这里着重介绍位于三个选项卡上的数据库组件。
1,BDE组件该选项卡上的组件只是一些用于访问和查询数据的数据集组件,这些组件都是非可视的组件。在实际应用中,运用最多的有 Table,Query等组件。
2,Data Source组件该选项卡上主要有一个组件很重要,那就是 DataSource组件。该组件是连接数据集组件和数据控制组件的桥梁。
3,Data Controls组件该选项卡上的组件主要用于显示浏览数据库中的数据信息,称为数据控制组件。通过这些组件用户就可以直接对数据库进行操作,包括浏览、修改数据等,是可视化组件。例如 DBGrid组件,DBEdit组件,DBNavigator组件等。
除了这三个选项卡上的数据库组件外,用于开发数据库程序的组件还很多,
如专门用于开发 ADO数据库程序的 ADO组件,以及数据报表组件等。
11.3.1 BDE组件 (1)
BDE数据集组件包含在组件工具面板中的 BDE选项卡中,提供了一组用来访问数据库中数据的组件,它们可以通过数据库别名来访问各种数据库,将数据库应用程序和数据库联系起来,该选项卡中的组件在运行时是不可见的,BDE组件选项如图 11-17所示。
图 11-17 BDE组件选项设计数据库应用程序,要先在窗体上添加一个 BDE组件,然后再给该组件设置相关访问数据库的属性,以便能访问数据库及表中的记录等。一般
BDE组件要跟 Data Access(数据访问组件)选项中的 DataSource组件和数据控制组件一起使用。表 11-2中列出了几种常用 BDE组件的功能。详见本教程 P199页。
在以上 BDE组件中,运用最多的是 Table组件和 Query组件通过这两个组件都可以与磁盘上的数据库建立连接,然后用 DataSource组件将这两个组件和数据控制部件连接起来,共同维护数据库中的数据。但这两个组件的大部分的属性和方法、事件都大致相同,本节着重以 Table组件为例,详细阐述 BDE数据集组件的使用。
11.3.1 BDE组件 (2)
1,Table组件的常用属性
(1) DataBaseName属性该属性是说明数据库应用程序所操作的数据库的名字,它可以是由
BDE定义的数据库别名、显式说明的数据库文件所在的磁盘路径或者由
Tdatabase组件定义的一个数据库名。
( 2) TableName属性该属性用来设定数据库中数据表的名称,从而可以通过 Table组件来操作该数据表。通常在设置这个属性之前必须先设置 DataBaseName属性,
这样就可以在 TableName属性中通过下拉菜单进行选择在 DataBaseName
属性所指定的数据库的表名。
( 3) TableType属性该属性说明与 Ttable组件相连接的数据库表的类型。
( 4) Active属性该属性用来打开或关闭数据集合,它的值是逻辑型的。值为 True时,
表示打开数据集,将当前数据集处于激活状态,可以通过其他数据控制组件对数据进行相关操作; 值为 False时,表示关闭数据集,这时不能对数据集进行操作,除非程序中调用了 Table组件的 Open方法打开当前数据集。
( 5) ReadOnly属性该属性决定当前数据库中的数据是否可以修改。
11.3.1 BDE组件 (3)
( 6) Modified属性该属性表示数据表中的数据是否被修改过。如果为 True,则表示数据已被修改;如果为 False,则表示没修改。该属性是只读属性,不能给该属性赋值,
一般在程序当中可以通过 Modified属性来判断当前数据库中的数据是否被修改。
( 7) FieldCount属性该属性用来返回当前指定数据表中的字段个数,是只读属性。
( 8) RecordCount属性该属性用来返回当前指定数据表中的记录条数,是只读属性。
( 9) Bof属性该属性用来确定当前记录指针是否到达数据表的第一条记录位置。如果指针指向第一条记录位置,则 Bof返回 True,否则都为 False。 Bof是只读属性。
( 10) Eof属性该属性用来确定当前记录指针是否到达数据表的最后一条记录位置。如果指针指向最后一条记录位置,则 Eof返回 True,否则都为 False。 Eof是只读属性。
( 11) Fields属性该属性用于取得数据表中各字段的信息,又称之为 Fields集合。它是一个数组,下标为整型数据,数组元素的类型是 Tfield类型。
11.3.1 BDE组件 (4)
该例对前面建立的数据表 student.db进行操作,把该表中的所有字段名加载到列表框 ListBox1中。新建工程在窗体上添加一个 Table组件 Table1,一个列表框 ListBox1、一个按钮 Button1和一个标签框 Label1,如图 11-18要求设置好相关属性。设置引用数据表 student.db的数据库别名为 stu_data,Table组件可以通过别名 stu_data来访问该数据表了,具体属性设置如下:
【 例 11-1】 Table组件属性应用举例。
Table1组件属性:
DataBaseName,stu_data
TableName,student.db
Active,True 激活 Table1数据集注意:先设置 DataBaseName和 TableName,然后才可以将 Active属性设置为 True。其他组件属性按照图 11-18进行设置。
图 11-18 设计界面加载字段按钮 Button1的 OnClick事件过程代码编写如下:procedure TForm1.Button1Click(Sender,TObject);
Var I,Integer;
11.3.1 BDE组件 (5)
begin
Table1.Close; //关闭 Table数据集,或者 Table1.Active,= False;
Table1.DatabaseName,= 'stu_data'; //设置数据库别名
Table1.TableType,= ttParadox;
//设置数据表类型为 Paradox数据表类型
Table1.TableName,= 'student.db'; //设置要访问的数据表名
Table1.Active,=True; //激活 Table数据集
//把字段名加载到列表框中
for I,= 0 to Table1.FieldCount - 1 do
ListBox1.AddItem(Table1.Fields[I].FieldName,Self);
//在标签框中显示字段个数和记录条数。
Label1.Caption,='表中共有 '+IntToStr(Table1.Fieldcount)+'个字段,';
Labe l1.Caption,=Label1.Caption + IntToStr(Table1.RecordCount)+'条记录!
';
Table1.Close; //关闭 Table数据集
end;
程序运行结果如图 11-19所示图 11-19 运行界面
11.3.1 BDE组件 (6)
2,Table组件的常用方法
( 1) FieldByName方法该方法用于取得指定字段的信息,其函数形式如下:
Function FieldByName(Const FieldName:string):Tfield
其中,参数 FieldName表示某个字段名,返回该字段的相关信息。它的作用跟
Fields属性的作用一样。
( 2)指针移动的相关方法,如表 11-3所示。详见本教程 P203
( 3)查询记录的相关方法
Table组件提供了四种查询记录的方法,分别是 GotoKey,GotoNearest、
FindKey,FindNearest。其中,GotoKey和 FindKey是用来精确查找,
GotoNearest和 FindNearest用于模糊查找。
如果想查找数据库表中的记录,必须指定想查找记录的一些字段的字段值,然后在表中进行检索,检索出与查找值相匹配的记录来。如果是在
Paradox或 dBASE数据库中的表中查找记录,那么查找值所对应的字段必须是表中的关键字段或辅助索引字段。
用 GotoKey和 GotoNearest方法进行查找记录的步骤如下:
确保要查找的字段是关键字段或辅助索引字段;
调用 SetKey方法把与表对应的
TTable部件置成查找状态;
11.3.1 BDE组件 (7)
把查找值赋给相应的字段;
调用 GotoKey方法,并测试它的返回值检验查找是否成功。
( 4)数据操作相关方法通过 Table组件可以实现数据库记录的浏览、查询外,最重要的作用就是进行数据维护,例如添加、删除、修改数据等操作。下面介绍几种常用的数据操作方法,如表 11-5所示。详见本教程 P205
3,常用事件:
( 1),Before+操作名称”事件
( 2),After+操作名称”事件
( 3),On+操作名称”事件
【 例 11-2】 设计学生档案管理程序,可以实现数据记录的浏览、添加、删除、
修改、和查询等功能。界面设计如图 11-20所示,运行效果如图 11-21所示。
图 11-20 设计界面 图 11-21 运行结果
11.3.1 BDE组件 (8)
界面设置。
添加一个 Table组件 Table1,其他组件按照图 9-19-1所示的进行添加。这里 7个编辑框( Edit1~ Edit7)分别用来显示 student.db表中的 7个字段内容,
如学号、姓名等信息; 4个控制记录指针的按钮( Button1~ Button4),将它们的 Caption属性设置为:“第一条记录”、“上一条记录”、“下一条记录”、“最后一条记录”;再添加 5个操作数据的按钮,Caption属性分别为:
“添加”、“删除”、“修改”、“保存”、“取消”,名称 Name分别为:
BTInsert,BTDelete,BTEdit,BTPost,BTCancel。另外再添加 1个编辑框
Edit8和 2个按钮,名称分别为 BTGotoKey和 BTFindKey,分别用 GotoKey方法和 FindKey方法查找由 Edit8指定姓名的记录。
Table1组件属性设置:
Name,Table1
DataBaseName,stu_data
TableName,student.db
Active,True
注意,先要设置 DataBaseName和
TableName,然后才可以将 Active属性设置为 True。
代码 详见本教程 P208~211页
11.3.2 Data Source组件
Data Source组件又称为数据源组件,位于,Data Access”选项中,组件图标是。它是 BDE数据集组件(如 Table和 Query组件等)和数据控制组件(如
DBEdit和 DBGrid等组件)之间传送数据的通道,它几乎是设计数据库应用程序时不可缺少的组件。 Data Source组件提供了数据集组件和数据控制组件之间的接口,它在数据集和数据控制组件之间起着管道的作用,管道中的信息流就是数据集中的数据,而数据组件把通过数据源传递过来的数据流在窗体中可视化地显示出来,并允许用户可视地去编辑、导航这些数据。
任何数据集的数据要想在数据组件中显示和操作,都必须与一个数据源组件 DataSource建立连接,同样任何数据组件希望接收和操作数据集中的数据,
也必须与一个数据源组件 DataSource建立连接。图 11-20表示了数据集组件、
数据源组件和数据控制组件之间的关系。
数据集组件 数据源组件 数据控制组件
DataSource组件的属性比较少,最重要的就是 DataSet属性。该属性指出要与哪一个数据集组件建立关系,它的属性值是某一个数据集组件 Table,Query或者是 ADO组件 ADOTable,ADOQuery等组件的对象名称。 DataSource组件通过
DataSet属性与数据集组件建立连接后,数据控制组件就可以借助 DataSource组件与数据集组件建立连接,这样就可以成功地访问数据库中的数据。
11.3.3 Data Controls组件 (1)
在 Data Controls组件选项卡中的各种数据控制组件可以用来显示和控制数据表中的数据,如显示记录、修改记录、输入记录等操作。下面介绍几种在数据库设计中常用的几种数据控制组件。 Data Controls组件选项卡如图 11 -21所示。各种数据浏览组件如表 11-9所示。详见本教程 P213页图 11-23 Data Controls组件选项卡中的数据控制组件数据控制组件是通过 Tdatasource组件链接到 TTable组件中具体的字段,
因而数据控制组件具有一些共同的属性,用于链接 TDatasource组件和 TField
组件。
Datasource属性,说明数据控制组件连接的数据源组件 TDatasource,数据控制组件是从 Tdatasource组件中获取数据的。
DataField属性,说明数据控制组件对应数据库表中实际的字段名称。该属性的值其实是 TDataSource链接的数据集组件 TTable或 TQuery组件中的字段组件的名字。
因此要创建一个应用程序显示和编辑数据库表中的记录,一般要在应用窗体中放置一个数据集组件 (TTable组件或 TQuery组件 )和至少一个数据源组件
11.3.3 Data Controls组件 (2)
1,DBGrid组件
DBGrid组件用于显示和编辑数据库表中记录信息的重要组件,它是程序设计过程中要经常使用的、灵活地用于显示和编辑数据库表中记录信息的一个十分有用的组件。 DBGrid组件以列表的形式来显示数据库中的数据记录。它包含了数据的行和列。在网格中每一行代表数据集中的一行,每一列代表数据集中的一个字段。它的用法很简单,是最常用的数据控制组件之一。组件图标为 。
( 1) DBGrid组件常用属性
DataSource属性,Columns属性
( 2)主要事件和作用
DBGrid组件提供了一些事件,用于控制用户在 TDBGrid组件中的操作,通过为其中的一些事件编写处理程序,可以有效地控制 DBGrid组件的行为。因为在 DBGrid组件中是一次显示多条记录和记录中的多个字段,也许在实际应用中,
不同的用户有不同的需要,如只想改变其中某一列的值或者控制用户每次只能进出网格中指定的列等。表 11-11列出了 DBGrid组件的主要事件及作用。
(图 11-24
Columns编辑器 )
11.3.3 Data Controls组件 (3 )
【 例 11-3】 用 DBGrid控件显示数据表 student.db中的记录。设计界面如图 11-
25所示,运行界面如图 11-26所示。
( 1)界面设计新建应用程序,在窗体中分别添加一个 Table组件,DataSource组件 和
BGrid组件,如图 11-22所示。
( 2)属性设置
Table组件属性:
Name,Table1
DataBaseName,stu_data
TableName,student.db
Active,True
注意,先设置
DataBaseName和
TableName然后才可以将
Active属性设置为 True。
DataSource组件属性:
Name,DataSource1
DataSet,Table1
DBGrid组件属性:
Name,DBGrid1
DataSource,DataSource1
Columns属性:添加字段到列中。
11.3.3 Data Controls组件 (4)
方法:双击 DBGrid组件打开 Columns编辑器,然后在右键菜单中选择 Add
All Fields选项,把表中的所有字段添加到 DBGrid组件中。也可以手动添加,
或者删除不要显示的字段,还可以对每列设置显示的列标题。方法是:在
Columns编辑器中选中某个字段名,在属性框中找到 Title属性,单击 Title属性前的,+”展开 Title属性,改变其中的 Caption属性,就可以修改该列显示的列标题。另外在 Title属性中还有 AlignMent,Color,Font等属性分别来设置列标题的对齐方式、字体颜色、字体等属性。
( 3)运行程序设计界面如图 11-25所示。运行界面如图 11-26所示。
图 11-25 设计界面 图 11-26 运行界面
11.3.3 Data Controls组件 (5)
2,DBNavigator组件以上这个例子只能浏览数据库中的记录,但不能添加、删除和修改记录。
为了实现对数据库中的记录进行维护,Delphi 7.0数据控制组件 Data Controls
选项卡中提供了一个 DBNavigator组件,其中包括数据记录的插入、修改、删除、保存、取消、刷新及指针移动的功能按钮。 DBNavigator组件位于 Data
Controls选项卡中第二个组件,图标为,画到窗体上的形状如图 11-24所示。
First
Prior
Next
Last
Insert
Deletee
Edit
Post
Cancel
Refresh
DBNavigator组件中各种按钮的功能如表 11-12所示。详见本教程 P217页
11.3.3 Data Controls组件 (6)
下面介绍 DBNavigator组件的常用属性
( 1) DataSource属性
( 2) VisibleButtons属性
( 3) ShowHint属性
( 4) Hints属性
【 例 11-4】 在 【 例 11-3】 中添加一个 DBNavigator组件,用它来控制数据的浏览、添加、删除、修改等功能。
这里只要将添加的 DBNavigator组件的
DataSource属性设置为 DataSource1即可。这样运行后就可以用 DBNavigator组件来控制数据的插入、删除、修改及浏览等操作结果如图 11-26所示。
图 11-29 用
DBNavigator组件控制数据
11.3.3 Data Controls组件 (7)
3,DBEdit组件该组件的作用不仅可以显示特定的字段,而且还可以编辑字段内容。
它的控件图标为,画在窗体上的形状跟 Edit组件一样。 DBEdit组件必须与数据表中的某个字段绑定,这样就可以显示该绑定字段的内容并可以修改。 DBEdit组件的常用属性有以下两种。
( 1) DataSource属性
( 2) DataField属性
4,DBComboBox组件该组件是数据库组合框组件,通过它用户可以在组合框列表中选择一个值也可以自行输入数据来更新数据。用户为了避免输入数据时的失误,一般选用这个组件,通过选择固定的值来更新数据。
5,其他数据控制组件其他数据控制组件还有 DBText,DBMemo,DBImage,DBList,
DBCheckBox,DBRadioGroup,DBLookUpListBox,DBLookUpListBox,
DBRichEdit,DBCtrlGrid等组件
11.3.3 Data Controls组件 (8)
【 例 11-5】 在 【 例 11-4】 的基础上,利用 DBEdit和 DBComboBox组件来显示和更新记录内容。添加一个 PageControl组件,新建两个页面
TabSheet1和 TabSheet2,并将 DBGrid1组件添加到 TabSheet1上;在
TabSheet2上按照图 11-30所示添加 7个标签框,6个 DBEdit组件和 1个
DBComboBox组件。
图 11-30 数据表选项网格形式的数据将各个 DBEdit组件的 DataSouce属性设置为 DataSource1,并分别给它们的 DataField属性设置不同的字段名,如学号、姓名等;将
DBComboBox组件的 DataSource属性设置为
DataSource1,DataField属性设置为性别,并在
Items属性中添加两个选项男、女。
运行结果如图 11-31所示。这样,既可以以网格数据表的形式查看记录,也可以查看单独一条记录的具体内容,并可以通过 DBNavigator组件添加、修改、删除和更新记录内容。
11.3.3 Data Controls组件 (8)
另外,假如要双击 DBGrid1组件中的某条记录时,就自动跳到“单条记录”选项,显示该选中记录的内容。则在 DBGrid1组件的 OnDblClick事件编写代码如下:
procedure TForm1.DBGrid1DblClick(Sender,TObject);
begin
TabSheet2.Show; //显示“单条记录”选项内容
end;