1、第第7章数据库程序设计章数据库程序设计数据库程序设计是程序设计的重要组成部分。自20世纪60年代以来,数据库技术得到了迅猛发展,从而拉开了信息时代的序幕。到了21世纪,数据处理是计算机四大应用(科学计算、过程控制、数据处理和辅助设计)的一个主要方面。本章将介绍数据库的相关概念,以及如何在Delphi中进行数据库应用程序的开发。7.1 数据库系统简介数据库系统简介数据库系统是一个庞大的综合性系统,通常意义的数据库系统主要包括数据库、数据库管理系统、数据库用户几个部分。数据库(Database)是数据库系统的基础,用于存放所有的数据信息;数据库管理系统(Database Management Sy
2、stem,DBMS)是数据库系统的核心,所有数据的操作与管理都必须在DBMS的控制下进行;数据库用户包括数据库管理者和使用者,不同类型的用户拥有不同的权力,并可以通过多种方式,在DBMS帮助下管理和使用数据库中的数据。7.1.1 数据库的基本概念数据库的基本概念1.数据、信息与数据库通常情况下,数据时指可以描述事物的符号记录,其形式是多样的,包括数字、文字、图形、音频与视频等。信息是指经过加工处理,具有一定含义,对用户决策有一定使用价值的数据。数据库是存放在计算机中有组织的可以表现为多种形式的可共享的数据集合。2.关系数据库当前几乎所有的主流数据库均采用关系模式来描述和保存数据,这样的数据库叫
3、关系数据库。关系数据库的特征是用二维表的结构来表示实体与实体集间的关系。1)实体实体表示客观存在的可以相互区别的事务,实体可以是具体的对象,如一个学生、一门课程,也可以是抽象的事务,如学生选课程。2)实体集实体集是具有相同特征的同一类实体的集合,如学校全体学生的集合,公司全体员工的集合等。3.关系表关系数据库中的数据关系用关系表表示。关系表是一张二维的表格,是按行和列排列的相关信息的逻辑组。下表就是一张描述学生信息的关系表。学号姓名性别年龄院系班级200804121张玲女20计算机系软件0802200814502王凡男19英语系物理0701:学生信息表1)字段关系表中的一列称为一个字段,用来表
4、示实体的属性,如上表中的字段用于表述学生的学号、姓名、性别、年龄等。2)记录表中的一行称为一个记录,表示一个具体的实体信息。如上表中的第一行数据用于描述“张玲”的信息;而第二行用于描述“王凡”的信息。3)索引一个关系表可以按照某种特定顺序进行排列或保存,这种特定顺序称为关系表的索引。使用索引可以在数据库中快速检索出指定的记录,从而提高数据库的访问速度。例如,上表中,可以将学号设置为索引字段。4)关键字关键字也称为主键,是关系表中能唯一描述数据元素的字段。例如,上表中“学号”字段可作为关键字,能唯一标识一条学生信息。学生的姓名、年龄、性别都可以相同,但学号是唯一的。5)关系表的操作关系表的操作包
5、括查询和更新两类。查询操作包括选择、投影、链接、除、交、并、差和笛卡尔积。更新操作包括插入、删除和修改。目前,常用的数据库很多,如Access、MS SQL Service、DB2、Sybase、Oracle等数据库系统。本章将以在Windows系统中使用较为广泛的SQL Service 2000数据库系统为例,介绍如何利用Delphi开发系统进行数据库程序设计。7.1.2 创建数据库创建数据库创建数据库是数据库程序设计的第一步,通常情况下,创建数据库包括建立数据库和建立数据表两个过程。在Windows系统中,通常使用可视化的数据库管理工具,如SQL Server 2000来完成数据库的建立工
6、作。1.建立数据库建立数据库的步骤如下:(1)打开“开始”菜单,执行“所有程序”Microsoft SQL Server“服务管理器”命令,然后单击启动按钮启动SQL Server服务器。(2)打开“开始”菜单,执行“程序”Microsoft SQL Server“企业管理器”命令,打开企业管理器窗口,如下图所示。企业管理器(3)展开企业管理器左边的控制台根目录,右击“数据库”目录,在弹出的快捷菜单中选择“新建数据库”命令,弹出“数据库属性”对话框。(4)在“名称”文本框中输入要建立数据库的名称,如右图所示。单击“确定”按钮,即可创建一个数据库。“数据库属性”对话框2.建立数据表建立数据库后,
7、还需要在数据库中建立数据表。操作步骤如下:(1)在企业管理器的控制台根目录中展开前面建立的STUINF数据库,选中“表”选项,如下图所示。(2)右击,在弹出的快捷菜单中选择“新建表”命令,打开表设计窗口,如下图所示。表设计窗口(3)在STUINF数据库中建立一张名为STUINF的数据表(数据结构如下表所示)。列 名数据类型说 明STUNOchar学号,字符串STUNAMEvarchar姓名,变长字符串STUSEXchar性别,字符串,长度为2STUAGEint年龄,整型STUDEPTvarchar所在院系,变长字符串STUCLASSvarchar所在班级,变长字符串STUINF表结构在表设计窗
8、口中输入上表中的信息,如右图所示,在“允许空”列中设置该列是否允许为空(当允许空时,不为该列添加数据;否则,必须为该列添加相应数据。通常情况下,所有数据列都不要允许为空)。右击要设置为主键的字段,如STUNO列,选择快捷菜单中的“设置主键”命令。所有列设置好后,单击工具栏中的“保存”按钮,即可完成数据表的创建。建立数据表(4)建立好数据表后,在数据表中添加数据,如下图所示。添加数据7.1.3 结构化查询语言结构化查询语言建立数据库的目的是为了能够安全高效地进行数据操作。在数据库中,通过结构化查询语言(Structured Query Language,SQL)完成对数据的操作。SQL是关系数据
9、库的标注语言,它不仅具有强大的查询功能,还具有数据控制和数据定义等功能,它集合了数据定义语言DDL、数据操纵语言DML和数据控制语言DCL的所有功能,充分体现了关系数据语言的有点,目前所有数据库都支持SQL语言,下面介绍一些简单的SQL语句。1.添加数据INSERT语句用于将一条记录插入指定的数据表中。1)完整插入如果一张数据表中有n个字段,在插入一条记录时对每个字段赋值,然后将该记录插入表中,这样的插入模式称为完整插入,其语法格式如下:INSERT NTO (字段1,字段2,字段n)VALUES(取值1,取值2,取值n)例如,要向STUINF表中完整插入一条记录是,可以使用下面的语句:INS
10、ERT INTO STUINFVALUES(200814567,王鹏,男,19,计算机学院,软件0812班)2)非完整插入如果一张数据表中有n字段,在插入数据时只对其中有限的的m个字段赋值,而其余n-m个字段没有赋值,这样的插入模式称为非完整插入,其语法格式如下:INSERT INTO(字段,字段2,字段m)VALUES(取值1,取值2,取值m)例如,要以非完整插入模式在STUINF表中添加一条数据,可以使用下面的语句:INSERT INTO STUINF(STUNO,STUNAME)VALUES(200812421,李婷)在非完整插入记录时,没有插入数据的列均自动添加为空值。3)注意事项在插
11、入数据过程中,要注意以下几点:(1)不能插入重复记录,即同一条记录不能插入两次。(2)在插入数据时,插入字段的属性与属性值必须一一对应。2.修改数据UPDATE语句用于修改数据表中的数据。1)有条件修改在修改表中数据时,可以预先设定修改的条件,只有满足条件的数据才能进行修改。其语法格式如下:UPDATE SET =,=,WHERE 例如,可以通过下面的语句将STUINF表中“王鹏”的年龄修改为20。UPDATE STUINFSET STUAGE=20WHERE STUNAME=“王鹏”2)无条件修改在没有设定任何条件的情况下修改表中数据,称为无条件修改。此时,表中的所有记录的值都会更新,其语法
12、格式如下:UPDATE SET =,=,例如,将STUINF表中所有的人的性别修改为“女”,班级修改为“硬件0810班”,可以使用下面的语句:UPDATE STUINFSET STUSEX=女,STUCLASS=硬件0810班3.删除数据使用SQL语言中的DELETE语句可以删除一条记录。与UPDATE语句相同,DELETE语句也分为有条件删除与无条件删除两种。1)有条件删除语句使用有条件删除语句可以删除数据库中符合条件的记录,其格式的格式如下:DELETE FROM WHERE 例如,删除STUINF表中年龄小于20的学生,可以用下面语句实现该功能。DELETE FROM STUINFWHE
13、RE STUAGE 204.查询数据在SQL语言中,最常用、功能最强大的语句是SELECT语句。使用SELECT语句,不但可以检索到所需数据,还可以对检索到的数据进行简单的处理。1)基本查询语句将SQL语言中能实现基本查询功能的语句称基本查询语句,这类语句仅能实现简单的查询功能,其语法格式如下:SELECT FROM WHERE 通过基本查询语句,可以将符合条件的记录作为一个集合输出。可以在语句中指定需要显示的列,也可以用“*”表示显示所有列,例如,显示STUINF表中所有女生的完整记录,可以使用下面的语句:SELECT*FROM STUINFWHERE STUSEX=女2)扩展查询语句为了扩
14、充SELECT语句的功能,可以在展SELECT语句中添加扩查询选项。(1)DISTINCT选项。用于删除查询中重复的记录,例如,查找STUINF表中的STUCLASS列,如果使用语句:SELECT STUCLASS FROM STUINF 则查询结果中会出现重复,因为有多个学生会在同一个班级,改为下面的语句:SELECT DISTINCT STUCLASS FROM STUINF则一个班只显示一条记录。(2)GROUP BY选项。使用GROUP BY选项可以将查询结果按指定字段显示,其语法格式如下:SELECT FROM WHERE GROUP BY 例如,查询STUINF表中年龄大于20岁的
15、学生,并按性别显示,可以使用下面的语句:SELECT*FROM STUINFWHERE STUAGE 20GROUP BY STUSEX(3)ORDER BY选项。使用ORDER BY选项可以将查询结果按照指定字段中数据的规律进行排序,其语法格式如下:SELECT FROM WHERE ORDER BY 例如,将STUINF表中的记录按年龄大小进行排序,可以使用下面的语句:SELECT*FROM STUINFORDER BY STUAGE3)查询语句中的统计功能 在SQL语言中,不仅可以利用SELECT语句来查询数据,还可以通过在SELECT语句中添加函数对查询结果进行简单统计。(1)COUN
16、T函数。可以在SELECT语句中添加COUNT函数来统计符合条件记录的条数,其语法格式如下:SELECT COUNT()FROM WHERE 例如,要查找STUINF表中年龄小于20的女生数量,可以使用下面的语句:SELECT COUNT(*)FROM STUINFWHERE STUAGE 20 AND STUSEX=“女”(2)SUM函数与AVG函数。可以在SELECT语句中使用SUM函数与AVG函数分别计算查询结果中某个字段的数据之和与平均值。当然,参与计算的数据必须是数值型。SUM函数的语法格式如下:SELECT SUM()FROM WHERE AVG函数的语法格式如下:SELECT A
17、VG()FROM WHERE 例如,要计算STUINF表中男生的平均年龄可以使用下面的语句:SELECT AVG(STUAGE)FROM STUINFWHERE STUSEX=男(3)MAX函数与MIN函数。在SELECT语句中,可以使用MAX函数与MIN函数来求取符合条件数据中的最大值与最小值。MAX函数的语法格式如下:SELECT MAX()FROM MIN函数的语法格式如下:SELECT MIN()FROM 例如,需要查找STUINF表中女生的最大年龄与最小的年龄,可以使用下面的语句:SELECT MAX(STUAGE),MIN(STUAGE)FROM STUINFWHERE STUSE
18、X=女7.2 连接数据库连接数据库创建好数据库后,还需要将数据库与开发系统连接,才能进行数据库程序的开发。下面介绍连接数据库与开发系统的方法。7.2.1 数据库连接对象数据库连接对象为了在应用程序中安全、高效地访问数据库,Microsoft等软件开发公司提出了多种解决方案,其中有代表性的有ODBC、JDBC、BDE和ADO等连接模式。下面介绍其中的AOD连接模式。ADO(ActiveX Data Objects,动态数据对象)连接模式的前身是Microsoft提出的一种通用的基于组件对象模型(Component Object Model,COM)的数据访问规则与应用程序接口OLE DB。他是一
19、种独立的数据库连接结构,可以通过OLE DB提供的驱动程序与任何数据库进行连接。ADO连接模式则更好地封装了OLE DB的功能,支持多种数据库,切换数据源简单,可以更加方便快捷的访问数据库。使用ADO连接模式连接数据库与开发系统的主要步骤如下:(1)连接至数据库,并判断其中数据是否修改。(2)指定访问数据库的命令,通常是一条或多条SQL语句。(3)执行数据库访问命令。(4)返回执行结果,结果保存在ADO组件的数据缓冲区中,供应用程序调用。7.2.2 建立建立ADO连接连接建立ADO连接最简单的方法是创建一个通用数据连接(UDL)文件,该文件的后缀名为.udl。下面介绍具体的操作步骤。1.创建U
20、DL文件在Windows系统中不能直接创建UDL文件,需要先在记事本中建立一个文本文件,然后执行“文件”“另存为”命令,打开“另存为”对话框。选择保存类型为“所有文件”,将文件后缀名设置为.udl,如下图所示,然后单击“保存”按钮,即可创建一个UDL文件。建立UDL文件2.选择数据库驱动创建好UDL文件后,双击该文件,弹出“数据链接属性”对话框,单击“提供程序”选项卡,在“选择您希望连接的数据”列表框中选择要连接的数据。由于这里采用的是SQL Server数据库,所以选择Microsoft OLE Previder for SQL Server选项,如右图所示。选择需要连接的数据然后,单击“下
21、一步”按钮,打开“连接”选项卡,如下图所示。“连接”选项卡3.建立数据连接在“连接”选项卡中执行如下操作,完成数据库与应用系统的连接。(1)在“选择或输入服务器名称”下拉列表框中选择服务器名称。(2)再“输入登录服务器信息”选项区中华国选择登录数据库的方式,由于在安装SQL Server数据库时采用Windows NT集成安全模式(这是常用方式),所以选中“使用Windows NT集成安全设置”单选按钮,否则需要指定登录数据库的用户名和密码。(3)选中“在服务器上选择合适数据库”单选按钮,然后在下边的下拉列表框中选择要访问的数据库。(4)单击“测试连接”按钮,如果连接成功,则弹出提示成功的对话
22、框,如右图所示。至此,完成数据库连接文件的建立。测试连接成功7.2.3 数据库连接组件数据库连接组件Delphi系统提供了多种连接数据库的组件,下面主要介绍使用ADO面板中的组件连接数据库的方法。1.ADOConnection组件在Delphi程序设计中,可以使用ADOConnection组件 来连接数据库,该组件位于Delphi系统中ADO面板中,如下图所示。通过设置ADOConnection组件的属性来实现与数据库的连接。该组件的常用属性如下:1)ConnectionString属性ADOConnection组件的ConnectionString属性用于设置数据库的连接的模式。选中Conn
23、ectionString属性,单击属性值域右侧的 按钮,弹出Connection String对话框,如下图所示。在对话框中选中Use Data Link File单选按钮,单击Browse按钮,在弹出的“打开”对话框中选中前面建立的UDL文件,然后单击OK按钮即可。2)Connected与KeepConnected属性这两个属性均为布尔类型,当Connected属性为True时表示与数据库建立连接。当KeepConnected属性为True时表示与数据库保持连接。当然,只有在Connected的属性值为True时,Keep Connected属性值才能为True。3)LoginPromptL
24、oginPrompt属性值为布尔类型,当其值为True时,建立数据库连接时会弹出一个登录对话框,如下图所示。登录对话框由于在设置数据库连接属性时选择的是Windows NT集成安全设置,所以不需要填写用户名与密码,直接单击OK按钮即可。一般将LoginPrompt属性值设置为False,以免出现登录对话框。2.ADODataSet组件与ADOQuery组件使用ADOConnection组件建立与数据库的连接后,如果需要获得数据库中的数据,还需要使用其他组件,如ADODataSet和ADOQuery等组件。1)ADODataSet组件ADODataSet组件 位于组件面板的ADO面板中,使用该组
25、件,可以获取数据库中的数据并其保存在缓冲区中。ADODataSet组件的常用属性如下:(1)Connection。通常情况下,ADODataSet组件不直接与数据库连接,而是通过ADOConnection组件间接与数据库连接,方法为将ADODataSet组件的Connection属性设置为要连接的ADOConnection组件。(2)Active。该属性为布尔类型,用于设置是否允许使用ADODataSet组件,只有将Active属性值设置为True时,才能使用ADODataSet组件。(3)CommandText。这是ADODataSet组件最为重要的属性,其值为字符串类型,可以将Comman
26、dText属性设置为具体的SQL语句,当ADODataSet组件执行时会自动执行该SQL语句,并将执行结果保存在缓冲区中供程序调用。在设置CommandText属性前,必须先设置好Connection属性。然后选中CommandText属性,单击属性值域右侧的 按钮,弹出CommandText Editor窗口。窗口左侧的Table列表框中列出了所有可用的数据库表,选中一个数据表后,在下方的Fields列表框中列出该数据表中的所有字段。单击Add Table to SQL按钮和Add Field to SQL按钮,可以将数据表的名称和字段名称添加的右侧的SQL列表框中,然后在该列表框中编写SQ
27、L语句,如下图所示。编写SQL语句2)ADOQuery组件ADOQuery组件 也位于ADO面板中,其功能与ADODataSet组件类似,用于获取数据库中的数据并保存到ADOQuery组件的缓冲区中供程序调用。ADOQuery组件的常用属性如下:(1)Connection:于ADODataSet组件的Connection属性相同。(2)SQL:为字符串类型,用于描述SQL语句。单击SQL属性值域右侧的 按钮,可以在弹出SQL语句编辑对话框中直接输入SQL语句。(3)Active:与ADODataSet组件的Action属性相同。3.DataSource组件通常情况下程序并不直接使用ADODat
28、aSet组件或者ADOQuery组件返回的数据,而是先使用DataSource组件 进行过渡,该组件位于DataAccess组件面板中。在程序设计过程中,通过设置DataSource组件的DataSet属性来与ADODadaSet组件或ADOQuery组件关联,并对这些组件中的数据进行格式化处理,将数据转换为DataSource组件属性值的形式供程序调用。4.建立与数据库连接的完整过程介绍了几个常用的数据库连接组件后,下面通过例子介绍连接数据库与Delphi程序的步骤。(1)建立一个UDL文件,然后测试与数据库的连接。(2)在Form窗体中添加一个ADOConnection组件,将其Conne
29、ctionString属性值设置为UDL文件,并将Connection属性与KeepConnection属性值设置为True。(3)在Form窗体中添加一个ADOQuery组件,将该组件的Connection属性设置为上一步骤添加的ADOConnection组件,然后设置SQL属性,并将ADOQuery组件的Active属性设置为True。(4)在Form窗体中添加一个DataSource组件,将其DataSet属性设置为上一步骤添加的ADOQuery组件。至此,完成Delphi程序的数据库的连接。如果数据库中如果存在多个数据表,每个数据表要对应一个ADOQuery组件,且每个ADOQuery
30、组件也要应对应一个DataSocrce组件,以便程序开发。当数据库中的表过多时,需要在Form窗体上添加多个ADOQuery组件和DataSource组件,使用过多组件将不利于界面设计和统一管理。为此,Delphi开发系统提供了一个新的窗体类型:Data Module窗体。执行FileNewData Module命令,打开一个新的Data Module窗体。该窗体的属性很少,不需要做特别设置,一般只需要修改其Name属性值,其他属性均取默认值,可以与向Form窗体中添加组件一样将所有与数据库连接相关的组件添加到Data Module窗体上,如下图所示。Data Module窗体7.2.4 数据
31、显示与处理数据显示与处理通过上面的操作,完成了Delphi程序与数据库的连接,并可从数据库中获得相应的数据。但是,获得的数据还不能显示出来,如果需要显示这些数据,还需要使用专用的数据显示与处理组件。1.DBGrid组件DBGrid组件 是Delphi系统中最常用的数据显示组件,该组件位于Data Control面板中,如图下所示。1)设置DBGrid组件的属性DBGrid组件的常用属性如下:(1)DataSource:因为需要使用DataSource组件将要显示的数据提供给DBGrid组件,才能显示数据。所以DBGrid组件的DataSource属性应设置为对应的DataSource组件。(2
32、)Columns:用于选择在DBGrid组件中显示的字段,只有添加到Columns属性中的字段才能在DBGrid组件中显示。设置Columns属性的方法为:选中DBGrid组件的Columns属性,单击属性值右侧的 按钮,弹出Columns编辑对话框。单击Add All Fields ,可以将所有可显示的字段添加到DBGrid组件中(在进行本操作前,需要先设置DBGrid组件的DataSource属性),如下图所示。单击Add New按钮 ,可以在DBGrid组件中添加一个字段;单击Delete Selected按钮 ,可以将选中的字段从DBGrid组件中移除。2)设置字段在Delphi程序设
33、计中,可以将字段定义为Columns对象,该对象的主要属性为:FieldName与Title。FieldName:用于将DBGrid组件中的字段与数据表中的字段关联。Title:用于设置DBGrid组件中字段的显示效果。该属性为集合类型,包含的子属性有:Alignment属性用于设置字段的显示位置;Caption属性用于设置显示字段的文本内容;Witdh属性用于设置字段文本的宽度。【例7-1】在Form窗体中显示STUINF表中数据。具体操作步骤如下:(1)建立UDL文件,测试与数据库的连接。(2)在Form窗体添加一个ADOConnection组件,一个ADODataSet组件,一个Data
34、Source组件和一个DBGrid组件,并设置这些组件的属性,具体如下:将ADOConnection组件的ConnectionString属性设置为UDL文件,将Connection属性和KeepConnection属性值设置为True。将ADODataSet组件的Connection属性设置为ADOConnection组件,将CommandText属性设置为“SELECT*FROM STUINF”,Active属性值设置为True。将DataSource组件的DataSet属性设置为ADODataSet组件。将DBGrid组件的DataSource属性设置为DataSource组件,然后单击
35、Columns属性值右侧的 按钮,在弹出的Columns编辑对话框中单击Add All Fields按钮,将所有字段添加到DBGrd组件中。当完成上述设置后,即可在窗体中显示STUINF表中的数据,如下图所示。在窗体中显示数据(3)设置DBGrid组件的Title属性。为了使得DBGrid组件中数据显示得更加规范,还需设置Title属性。选中STUNO字段,将Title属性集中的Caption属性设置为“学号”,Width属性设置为60,Alignment属性设置为taCenter。采用同样的方法,设置其它字段的属性,最终显示效果如下图所示。2.DBNavigator组件使用DBNavigat
36、or组件,可以在不编写任何代码的情况下,实现对数据库的基本操作。1)DBNavigator组件的属性 DBNavigator组件位于组件面板中的Data Controls面板中。DBNavigator组件的主要属性如下:DataSource:用于决定数据来源,应将该属性值设置为DataSource组件。VisibleButtion:该属性有10个属性值,对应的DBNavigator组件上的10个按钮,这10个属性值均为布尔型,当为True时,显示其对应的按钮,否则不显示该按钮。2)使用DBNavigator组件DBNavigation组件共有10个按钮,如下图所示。各按钮的名称与功能如下:Fi
37、rst按钮 :将第一条记录设置为当前记录。Prior按钮 :将上一条记录设置为当前记录。Next按钮 :将下一条记录设置为当前记录。Last按钮 :将最后一条记录设置为当前记录。Insert按钮 :在当前记录前添加一条空记录。Delete按钮 :删除当前记录。Edit按钮 :允许编辑当前记录(极少使用)。Post按钮 :将修改的记录提交到数据库。Cancel按钮 :撤销修改操作。Refresh按钮 :刷新当前数据。3.其它数据操作组件使用DBGrid组件不仅可以查看数据,还可以对数据进行增加、删除、修改等操作。但是,为了便于输入数据好保持界面的一致性,在实际应用中,一般只用DBGrid组件来显
38、示数据,而将输入、修改、删除数据的操作由其他组件完成。可以使用Data Controls面板中提供的组件来添加、修改和删除数据,这些组件主要包括DBEdit、DBListBox、DBComboBox和DBRadioGroup等组件。这些组件在外观上与对应的Edit组件、ListBox组件、ComboBox组件和RadioGroup组件相同,但是在使用时却有较大不同,而这些不同主要表现在组件与数据源的关联上,下面以DBEdit组件为例进行介绍。1)设置DBEdit组件的属性DBEdit组件 的主要属性有以下两个:DataSource:设置DBEdit组件的数据源,将该属性设置为对应的DataSo
39、urce组件。DataField:设置与DBEdit组件对应的数据表中的字段。2)DBEdit组件的作用使用DBEdit组件的方法为:选中DBEdit组件,在其DataField属性值下拉列表框中选择对应的字段名称。当程序运行时,该字段的当前值即可以通过DBEdit组件显示。【例7-2】使用Data Controls面板中相关组件对数据库中数据进行简单操作。以STUINF表中的数据为例,其中的学号、姓名和年龄用DBEdit组件显示;性别用DBRadioGroup组件显示;院系与班级可以使用DBComboBox组件显示。具体操作步骤如下:(1)按【例7-1】中前两步建立数据库连接并设置数据库连接
40、组件。(2)在Form窗体添加一个DBNavigator组件,将DataSource属性值设置为DataSource组件。(3)在Form窗体添加6个DBEdit组件,分别用于显示“学号”、“姓名”、“年龄”、“院系”和“班级”。将这6个组件的DataSource属性设置为DataSource组件;将它们的DataField属性分别设置为STUNO,STUNAME,STUAGE,STUDEPT和STUCLASS字段。(4)在Form窗体添加一个DBRadioGroup组件,将DataSource属性设置为DataSource组件,并将DataField属性设置为STUSEX,用于显示“性别”。
41、将Columns属性值设置为2,表示一行显示两列数据。单击Items属性值右边的 按钮,在弹出对话框中添加两行信息:“男”和“女”。(5)在Form窗体中添加一个DBGrid组件,将DataSource属性设置为DataSource组件,并按照【例7-1】中步骤(3)的方法设置DBGrid组件的属性。完成设置后,其程序界面如图下所示。可以程序界面中添加、删除和修改记录,而不用另外编号代码。7.3 动态数据操作动态数据操作使用Data Controls面板中的组件可以在不编写代码的情况下实现基本的数据操作。但是这样的方法有两个缺点:一个是没有数据查询功能,而这个功能在数据库中非常重要的;另一个是
42、不能获得当前记录的值,这使得对数据的操作非常不便。为此,Delphi系统允许直接使用SQL语句来动态操作数据。7.3.1 ADOQuery组件与数据操作组件与数据操作ADOQuery组件是一个功能十分强大的数据操作组件,使用该组件可以再代码中插入SQL语句来动态操作数据;此外,ADOQuery组件还提供了多种方法来直接操作数据,提高了程序设计的效率。下面介绍如何使用ADOQuery组件的方法来操作数据库。ADOQuery组件中用于进行数据操作的方法主要有以下几个:First:将与ADOQuery组件连接的数据表中的第一条记录设置为当前记录。Prior:将上一条记录设置为当前记录。Next:将下
43、一条记录设置为当前记录。Last:将最后一条记录设置为当前记录。Insert:在数据表中添加一条记录。Delete:删除当前数据记录。Post:将数据表中的数据提交到数据库。Refresh:刷新当前数据表中的数据。【例7-3】以【例7-2】中的数据为例,使用ADOQuery组件实现DBNavigator组件的基本功能。本例要实现的基本功能包括:添加、删除记录,将第一条记录、最后一条记录、上一条记录和下一条记录设置为当前记录以及提交记录。操作步骤如下:(1)在Form窗体添加一个ADOConnection组件,一个ADOQuery组件和一个DataSource组件。将ADOConnection组
44、件的Connection String属性值设置为UDL文件;Connected属性和KeepConnected属性均设置为True。设置ADOQuery组件的Connection属性为ADOConnection组件,SQL属性设置为“SELECT*FROM STUINF”,将Active属性设置为True。将DataSource组件的DataSet属性设置为ADOQuery组件。(2)在Form窗体中添加一个DBGrid组件,一个DBRadioGroup组件和5个DBEdit组件,具体设置同【例7-2】对应组件的设置。(3)在Form窗体添加7个Button组件,创建界面,如下图所示。(4)
45、为“上一条”按钮的OnClick事件添加如下代码,将上一条记录设置为当前记录。procedure TForm1.Button5Click(Sender:TObject);beginADOQuery1.Prior;end;(5)为“下一条”按钮的OnClick事件添加如下代码,将下一条记录设置为当前记录。procedure TForm1.Button6Click(Sender:TObject);begin ADOQuery1.Next;end;(6)为“首记录”按钮的OnClick事件添加如下代码,将第一条记录设置为当前记录。procedure TForm1.Button3Click(Sende
46、r:TObject);begin ADOQuery1.First;end;(7)为“尾记录”按钮的OnClick事件添加如下代码,将最后一条记录设置为当前记录。procedure TForm1.Button4Click(Sender:TObject);begin ADOQuery1.Last;end;(8)为“添加”按钮的OnClick事件添加如下代码,在当前记录前添加一条空记录。procedure TForm1.Button1Click(Sender:TObject);begin ADOQuery1.Insert;end;(9)为“删除”按钮的OnClick事件添加如下代码,删除当前的记录。
47、procedure TForm1.Button2Click(Sender:TObject);begin ADOQuery1.Delete;end;(10)为“提交”按钮的OnClick事件添加如下代码,将当前缓冲区中数据提交到数据库。procedure TForm1.Button7Click(Sender:TObject);begin ADOQuery1.Post;end;7.3.2 在在ADOQuery组件组件中中使用使用SQL语句语句前面介绍了使用ADOQuery组件进行处理数据的方法,使用这两种组件,可以在不编写代码的情况成对数据库中的数据进行操作,但也有其不足之处,主要表现为对数据操作
48、的功能有限,不能灵活对数据进行操作。为此,可以将ADOQuery组件与SQL语句结合起来,通过ADOQuery组件直接操作SQL语句,从而提高了数据操作的灵活性。在ADOQuery组件中操作SQL语句的操作步骤如下:(1)关闭ADOQuery连接,使用语句为ADOQuery.Close;(2)清除ADOQuery中原有的SQL语句,使用语句为:ADOQuery.SQL.Clear;(3)在ADOQuery组件中添加新的SQL语句,使用语句为:ADOQuery.SQL.ADD(SQLSTR);(4)打开ADOQuery组件连接,使用语句为:ADOQuery.Open;7.4 数据库程序设计实例数
49、据库程序设计实例为了帮助读者更好地掌握如何在Delphi系统中进行数据库程序设计,本节将制作一个通讯录。要求通讯录具有添加、删除、修改通讯信息和按指定条件查询通讯信息的功能。7.4.1 数据库设计数据库设计在数据库程序设计中,建立数据库与数据表是最基本也是最重要的内容之一。1.创建数据库 在建立数据库前应选择要使用的数据库系统,目前在中小型应用系统开发中,广泛使用的数据库系统是MS SQL Server。这里以SQL Server 2000为数据库开发平台进行介绍。创建数据库的操作步骤如下:(1)启动SQL Server数据库系统,进入企业管理器,如下图所示。(2)在左侧的控制台根目录中右击“
50、数据库”选项,在弹出的快捷菜单中选择“新建数据库”命令,弹出“数据库属性”对话框。在“名称”文本框中输入数据库的名称,这里输入MyDataBase,然后单击“确定”按钮,完成数据库的建立。2.创建数据表建立好数据库后,还需要在数据库中创建数据表。1)确定数据表格式在创建数据表之前,应先确定数据表的格式,包括表中各个字段的名称、含义、数据类型以及时否可以为空等。本例的数据表结构见下表。字段名含义类型说明NAME姓名varchar(20)主键SEX性别smallint0:男,1:女,不空GRP分组varchar(12)不空MOBILE手机号码varchar(12)可空HOME住宅电话varchar
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。