Delphi程序设计第7章

PPT
  • 阅读 64 次
  • 下载 0 次
  • 页数 111 页
  • 大小 1.006 MB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
Delphi程序设计第7章
可在后台配置第一页与第二页中间广告代码
Delphi程序设计第7章
可在后台配置第二页与第三页中间广告代码
Delphi程序设计第7章
可在后台配置第三页与第四页中间广告代码
Delphi程序设计第7章
Delphi程序设计第7章
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 111
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
文本内容

【文档说明】Delphi程序设计第7章.ppt,共(111)页,1.006 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2256.html

以下为本文档部分文字说明:

第7章数据库程序设计数据库程序设计是程序设计的重要组成部分。自20世纪60年代以来,数据库技术得到了迅猛发展,从而拉开了信息时代的序幕。到了21世纪,数据处理是计算机四大应用(科学计算、过程控制、数据处理和辅助设计)的一个主要方面。本章将介绍数据库的相关概念,以及如何

在Delphi中进行数据库应用程序的开发。7.1数据库系统简介数据库系统是一个庞大的综合性系统,通常意义的数据库系统主要包括数据库、数据库管理系统、数据库用户几个部分。数据库(Database)是数据库系统的基础,用于存放所有的数据信息;数据库管理系统(Da

tabaseManagementSystem,DBMS)是数据库系统的核心,所有数据的操作与管理都必须在DBMS的控制下进行;数据库用户包括数据库管理者和使用者,不同类型的用户拥有不同的权力,并可以通过多种方式,在DBMS帮助下管理和使用数据库中的数据

。7.1.1数据库的基本概念1.数据、信息与数据库通常情况下,数据时指可以描述事物的符号记录,其形式是多样的,包括数字、文字、图形、音频与视频等。信息是指经过加工处理,具有一定含义,对用户决策有一定使用价值的数据。数据库是存

放在计算机中有组织的可以表现为多种形式的可共享的数据集合。2.关系数据库当前几乎所有的主流数据库均采用关系模式来描述和保存数据,这样的数据库叫关系数据库。关系数据库的特征是用二维表的结构来表示实体与实体集间的关系。1)实体实体表示客观存在的可以相互区别的事

务,实体可以是具体的对象,如一个学生、一门课程,也可以是抽象的事务,如学生选课程。2)实体集实体集是具有相同特征的同一类实体的集合,如学校全体学生的集合,公司全体员工的集合等。3.关系表关系数据库中的数据关系用

关系表表示。关系表是一张二维的表格,是按行和列排列的相关信息的逻辑组。下表就是一张描述学生信息的关系表。学号姓名性别年龄院系班级200804121张玲女20计算机系软件0802200814502王凡男19英语系物理0701::::学生信息表1)字段关系表中

的一列称为一个字段,用来表示实体的属性,如上表中的字段用于表述学生的学号、姓名、性别、年龄等。2)记录表中的一行称为一个记录,表示一个具体的实体信息。如上表中的第一行数据用于描述“张玲”的信息;而第二行用于描述“王凡”的信息。3)索引一个关系表可以按照某种特定顺序进行排列或保存,这种特定顺序

称为关系表的索引。使用索引可以在数据库中快速检索出指定的记录,从而提高数据库的访问速度。例如,上表中,可以将学号设置为索引字段。4)关键字关键字也称为主键,是关系表中能唯一描述数据元素的字段。例如,上表中“学号”字段可作为关键字,能唯一标识一条学生信息。学生的姓名、年龄、性别都可以相同,但学

号是唯一的。5)关系表的操作关系表的操作包括查询和更新两类。查询操作包括选择、投影、链接、除、交、并、差和笛卡尔积。更新操作包括插入、删除和修改。目前,常用的数据库很多,如Access、MSSQLService、DB2、Sybase、Oracle等数据库系统。本章将

以在Windows系统中使用较为广泛的SQLService2000数据库系统为例,介绍如何利用Delphi开发系统进行数据库程序设计。7.1.2创建数据库创建数据库是数据库程序设计的第一步,通常情况下,创建数据库包括建立数据库和建立数据表两个过程。在Windows系统中,通常使用可视化的数据库

管理工具,如SQLServer2000来完成数据库的建立工作。1.建立数据库建立数据库的步骤如下:(1)打开“开始”菜单,执行“所有程序”→MicrosoftSQLServer→“服务管理器”命令,然后单击启动按钮启动SQLServer服务器。(2)打开“开始”菜单,执行“程序”→M

icrosoftSQLServer→“企业管理器”命令,打开企业管理器窗口,如下图所示。企业管理器(3)展开企业管理器左边的控制台根目录,右击“数据库”目录,在弹出的快捷菜单中选择“新建数据库”命令,弹出“数据库属性”对话框。(4)在“名称”文本框中输入要建立数据库的名

称,如右图所示。单击“确定”按钮,即可创建一个数据库。“数据库属性”对话框2.建立数据表建立数据库后,还需要在数据库中建立数据表。操作步骤如下:(1)在企业管理器的控制台根目录中展开前面建立的STUIN

F数据库,选中“表”选项,如下图所示。(2)右击,在弹出的快捷菜单中选择“新建表”命令,打开表设计窗口,如下图所示。表设计窗口(3)在STUINF数据库中建立一张名为STUINF的数据表(数据结构如下表所示)。列名数据类型说明STUNOchar学号,

字符串STUNAMEvarchar姓名,变长字符串STUSEXchar性别,字符串,长度为2STUAGEint年龄,整型STUDEPTvarchar所在院系,变长字符串STUCLASSvarchar所在班级,

变长字符串STUINF表结构在表设计窗口中输入上表中的信息,如右图所示,在“允许空”列中设置该列是否允许为空(当允许空时,不为该列添加数据;否则,必须为该列添加相应数据。通常情况下,所有数据列都不要允许为空)。右击要设置为主键的字

段,如STUNO列,选择快捷菜单中的“设置主键”命令。所有列设置好后,单击工具栏中的“保存”按钮,即可完成数据表的创建。建立数据表(4)建立好数据表后,在数据表中添加数据,如下图所示。添加数据7.1.3结构化查询语言

建立数据库的目的是为了能够安全高效地进行数据操作。在数据库中,通过结构化查询语言(StructuredQueryLanguage,SQL)完成对数据的操作。SQL是关系数据库的标注语言,它不仅具有强大的查询功能,还具有数据控制和数据定义等功能,它集合了数据定义语言DDL、数据操纵语言DML和数据

控制语言DCL的所有功能,充分体现了关系数据语言的有点,目前所有数据库都支持SQL语言,下面介绍一些简单的SQL语句。1.添加数据INSERT语句用于将一条记录插入指定的数据表中。1)完整插入如果一张数据表中有n个字段,在插入一条记录时对每个字段赋值,然后将该记录插入表中,这样的插入

模式称为完整插入,其语法格式如下:INSERTNTO<表名>(字段1,字段2,…,字段n)VALUES(取值1,取值2,…,取值n)例如,要向STUINF表中完整插入一条记录是,可以使用下面的语句:INSERTINTOSTUINFVALUES(‘200814567’

,‘王鹏’,‘男’,19,‘计算机学院’,‘软件0812班’)2)非完整插入如果一张数据表中有n字段,在插入数据时只对其中有限的的m个字段赋值,而其余n-m个字段没有赋值,这样的插入模式称为非完整插入,其语法格式如下:INSERTINTO<表名>(字段,

字段2,…,字段m)VALUES(取值1,取值2,…,取值m)例如,要以非完整插入模式在STUINF表中添加一条数据,可以使用下面的语句:INSERTINTOSTUINF(STUNO,STUNAME)VALUES(‘2008

12421’,‘李婷’)在非完整插入记录时,没有插入数据的列均自动添加为空值。3)注意事项在插入数据过程中,要注意以下几点:(1)不能插入重复记录,即同一条记录不能插入两次。(2)在插入数据时,插入字段的属性与属性值必须一一对应。2.修改数据UPDATE语句用于修改数据表中的数据。1)有条件

修改在修改表中数据时,可以预先设定修改的条件,只有满足条件的数据才能进行修改。其语法格式如下:UPDATE<表名>SET<字段1>=<赋值1>,<字段2>=<赋值2>,……WHERE<条件表达式>例如,可以通过下面的语句将STU

INF表中“王鹏”的年龄修改为20。UPDATESTUINFSETSTUAGE=20WHERESTUNAME=“王鹏”2)无条件修改在没有设定任何条件的情况下修改表中数据,称为无条件修改。此时,表中的所有记录的值都会更新,其语法格式如下:UPD

ATE<表名>SET<字段1>=<赋值1>,<字段2>=<赋值2>,……例如,将STUINF表中所有的人的性别修改为“女”,班级修改为“硬件0810班”,可以使用下面的语句:UPDATESTUINFSETSTUSEX="女",STUCLASS="硬件0810班

"3.删除数据使用SQL语言中的DELETE语句可以删除一条记录。与UPDATE语句相同,DELETE语句也分为有条件删除与无条件删除两种。1)有条件删除语句使用有条件删除语句可以删除数据库中符合条件的记录,其格式的格式如下:DELETEFROM<表名>WHE

RE<条件表达式>例如,删除STUINF表中年龄小于20的学生,可以用下面语句实现该功能。DELETEFROMSTUINFWHERESTUAGE<202)无条件删除语句无条件删除是指根据条件要求,删除数据库表中所有满足条件的记录,如果不指定条件,则删除表中的所有记录。例如,要删除STUINF表

中年龄大于20岁的学生信息,可以使用下面的语句:DELETEFROMSTUINFWHERESTUAGE>204.查询数据在SQL语言中,最常用、功能最强大的语句是SELECT语句。使用SELECT语句,不但可以检索到所需数据,还

可以对检索到的数据进行简单的处理。1)基本查询语句将SQL语言中能实现基本查询功能的语句称基本查询语句,这类语句仅能实现简单的查询功能,其语法格式如下:SELECT<列名1,列名2,…,列名n>FRO

M<表名>WHERE<条件表达式>通过基本查询语句,可以将符合条件的记录作为一个集合输出。可以在语句中指定需要显示的列,也可以用“*”表示显示所有列,例如,显示STUINF表中所有女生的完整记录,可以使用下面的语句:SELECT*FROMSTU

INFWHERESTUSEX="女"2)扩展查询语句为了扩充SELECT语句的功能,可以在展SELECT语句中添加扩查询选项。(1)DISTINCT选项。用于删除查询中重复的记录,例如,查找STUINF表中的STUCLASS列,如果使用语

句:SELECTSTUCLASSFROMSTUINF则查询结果中会出现重复,因为有多个学生会在同一个班级,改为下面的语句:SELECTDISTINCTSTUCLASSFROMSTUINF则一个班只显示一条记录。(

2)GROUPBY选项。使用GROUPBY选项可以将查询结果按指定字段显示,其语法格式如下:SELECT<列名>FROM<表名>WHERE<条件表达式>GROUPBY<列名>例如,查询STUINF表中年龄大于20岁

的学生,并按性别显示,可以使用下面的语句:SELECT*FROMSTUINFWHERESTUAGE>20GROUPBYSTUSEX(3)ORDERBY选项。使用ORDERBY选项可以将查询结果按照指定字段中数据的规

律进行排序,其语法格式如下:SELECT<列名>FROM<表名>WHERE<条件表达式>ORDERBY<列名>例如,将STUINF表中的记录按年龄大小进行排序,可以使用下面的语句:SELECT*FROMSTUINFORDERBYSTU

AGE3)查询语句中的统计功能在SQL语言中,不仅可以利用SELECT语句来查询数据,还可以通过在SELECT语句中添加函数对查询结果进行简单统计。(1)COUNT函数。可以在SELECT语句中添加COUNT函数来统计符合条件记录的条数,其语法格式如下:SELECTCOUNT

(<列名>)FROM<表名>WHERE<条件表达式>例如,要查找STUINF表中年龄小于20的女生数量,可以使用下面的语句:SELECTCOUNT(*)FROMSTUINFWHERESTUAGE<20ANDSTUSEX

=“女”(2)SUM函数与AVG函数。可以在SELECT语句中使用SUM函数与AVG函数分别计算查询结果中某个字段的数据之和与平均值。当然,参与计算的数据必须是数值型。SUM函数的语法格式如下:SELECTSUM(<列名>)FROM<表名>WHERE<条

件表达式>AVG函数的语法格式如下:SELECTAVG(<列名>)FROM<表名>WHERE<条件表达式>例如,要计算STUINF表中男生的平均年龄可以使用下面的语句:SELECTAVG(STUAGE)FROMSTUINFWHERESTUSEX=‘男’

(3)MAX函数与MIN函数。在SELECT语句中,可以使用MAX函数与MIN函数来求取符合条件数据中的最大值与最小值。MAX函数的语法格式如下:SELECTMAX(<列名>)FROM<表名>MIN函数的语法格式如下:SELECTMIN(<列名>

)FROM<表名>例如,需要查找STUINF表中女生的最大年龄与最小的年龄,可以使用下面的语句:SELECTMAX(STUAGE),MIN(STUAGE)FROMSTUINFWHERESTUSEX="女"7.2连接数据库创建好数据库后,还需要将数据库与开发系统连接,才能

进行数据库程序的开发。下面介绍连接数据库与开发系统的方法。7.2.1数据库连接对象为了在应用程序中安全、高效地访问数据库,Microsoft等软件开发公司提出了多种解决方案,其中有代表性的有ODBC、JDBC、BDE和ADO等连接模式。下面介绍其中的AOD连接模式。ADO(ActiveX

DataObjects,动态数据对象)连接模式的前身是Microsoft提出的一种通用的基于组件对象模型(ComponentObjectModel,COM)的数据访问规则与应用程序接口OLEDB。他是一种独立的数据库连接结构,可以通过OLEDB提供的驱动程序与

任何数据库进行连接。ADO连接模式则更好地封装了OLEDB的功能,支持多种数据库,切换数据源简单,可以更加方便快捷的访问数据库。使用ADO连接模式连接数据库与开发系统的主要步骤如下:(1)连接至数据库,并判断其中数据是否修改。(2)指定访问数据库的命令,通常是一条或多条SQL语句。(

3)执行数据库访问命令。(4)返回执行结果,结果保存在ADO组件的数据缓冲区中,供应用程序调用。7.2.2建立ADO连接建立ADO连接最简单的方法是创建一个通用数据连接(UDL)文件,该文件的后缀名为.udl。下面介绍具体的操作步骤。1.创建UDL文件在Wind

ows系统中不能直接创建UDL文件,需要先在记事本中建立一个文本文件,然后执行“文件”→“另存为”命令,打开“另存为”对话框。选择保存类型为“所有文件”,将文件后缀名设置为.udl,如下图所示,然后单击“保存”按钮,即可创建一个UDL

文件。建立UDL文件2.选择数据库驱动创建好UDL文件后,双击该文件,弹出“数据链接属性”对话框,单击“提供程序”选项卡,在“选择您希望连接的数据”列表框中选择要连接的数据。由于这里采用的是SQLServer数据库,所以选择MicrosoftOLEPrevider

forSQLServer选项,如右图所示。选择需要连接的数据然后,单击“下一步”按钮,打开“连接”选项卡,如下图所示。“连接”选项卡3.建立数据连接在“连接”选项卡中执行如下操作,完成数据库与应用系统的连接。(1)在“选择或输入服务器名称”下拉列表框中选择服务器名称。(2)

再“输入登录服务器信息”选项区中华国选择登录数据库的方式,由于在安装SQLServer数据库时采用WindowsNT集成安全模式(这是常用方式),所以选中“使用WindowsNT集成安全设置”单选按钮,否则需要指定登录数据库的用户名和

密码。(3)选中“在服务器上选择合适数据库”单选按钮,然后在下边的下拉列表框中选择要访问的数据库。(4)单击“测试连接”按钮,如果连接成功,则弹出提示成功的对话框,如右图所示。至此,完成数据库连接文件的建立。

测试连接成功7.2.3数据库连接组件Delphi系统提供了多种连接数据库的组件,下面主要介绍使用ADO面板中的组件连接数据库的方法。1.ADOConnection组件在Delphi程序设计中,可以使用ADO

Connection组件来连接数据库,该组件位于Delphi系统中ADO面板中,如下图所示。通过设置ADOConnection组件的属性来实现与数据库的连接。该组件的常用属性如下:1)Connectio

nString属性ADOConnection组件的ConnectionString属性用于设置数据库的连接的模式。选中ConnectionString属性,单击属性值域右侧的按钮,弹出ConnectionString对话框,如下图所示。在

对话框中选中UseDataLinkFile单选按钮,单击Browse按钮,在弹出的“打开”对话框中选中前面建立的UDL文件,然后单击OK按钮即可。2)Connected与KeepConnected属性这两个属性均为布尔类型,当Connected属性为True时表示与数据库建立连接

。当KeepConnected属性为True时表示与数据库保持连接。当然,只有在Connected的属性值为True时,KeepConnected属性值才能为True。3)LoginPromptLoginPr

ompt属性值为布尔类型,当其值为True时,建立数据库连接时会弹出一个登录对话框,如下图所示。登录对话框由于在设置数据库连接属性时选择的是WindowsNT集成安全设置,所以不需要填写用户名与密码,直接单击OK按

钮即可。一般将LoginPrompt属性值设置为False,以免出现登录对话框。2.ADODataSet组件与ADOQuery组件使用ADOConnection组件建立与数据库的连接后,如果需要获得数据库中的数据,还需要使用其他组件,如ADODataSet和ADOQuery等组件。1)ADODat

aSet组件ADODataSet组件位于组件面板的ADO面板中,使用该组件,可以获取数据库中的数据并其保存在缓冲区中。ADODataSet组件的常用属性如下:(1)Connection。通常情况下,ADODataSet组件不直接与数据库连接,而是通过

ADOConnection组件间接与数据库连接,方法为将ADODataSet组件的Connection属性设置为要连接的ADOConnection组件。(2)Active。该属性为布尔类型,用于设置是否允许使用ADODataSet组件,只有将Active属性值设置为True时,才能使用ADO

DataSet组件。(3)CommandText。这是ADODataSet组件最为重要的属性,其值为字符串类型,可以将CommandText属性设置为具体的SQL语句,当ADODataSet组件执行时会自动执行该SQL语句,并将执行结果保存在缓冲区中供程序调用。在设置CommandText属

性前,必须先设置好Connection属性。然后选中CommandText属性,单击属性值域右侧的按钮,弹出CommandTextEditor窗口。窗口左侧的Table列表框中列出了所有可用的数据库表,选中一个数据表后,在下方的Fields列表框中列出该数据表中的所有字段。单击AddTableto

SQL按钮和AddFieldtoSQL按钮,可以将数据表的名称和字段名称添加的右侧的SQL列表框中,然后在该列表框中编写SQL语句,如下图所示。编写SQL语句2)ADOQuery组件ADOQuery组件也位于ADO面板中,其功能与ADODataSet组件类似,用于获取数据库

中的数据并保存到ADOQuery组件的缓冲区中供程序调用。ADOQuery组件的常用属性如下:(1)Connection:于ADODataSet组件的Connection属性相同。(2)SQL:为字符串类型,用于描述SQL语句。单击S

QL属性值域右侧的按钮,可以在弹出SQL语句编辑对话框中直接输入SQL语句。(3)Active:与ADODataSet组件的Action属性相同。3.DataSource组件通常情况下程序并不直接使用ADODataSet组件或者ADOQuery组件

返回的数据,而是先使用DataSource组件进行过渡,该组件位于DataAccess组件面板中。在程序设计过程中,通过设置DataSource组件的DataSet属性来与ADODadaSet组件或ADOQue

ry组件关联,并对这些组件中的数据进行格式化处理,将数据转换为DataSource组件属性值的形式供程序调用。4.建立与数据库连接的完整过程介绍了几个常用的数据库连接组件后,下面通过例子介绍连接数据库与Delphi程序的步骤。(1)建立一个UDL

文件,然后测试与数据库的连接。(2)在Form窗体中添加一个ADOConnection组件,将其ConnectionString属性值设置为UDL文件,并将Connection属性与KeepConnection属性值设置为True。(3)在Form窗体中添加一个ADOQue

ry组件,将该组件的Connection属性设置为上一步骤添加的ADOConnection组件,然后设置SQL属性,并将ADOQuery组件的Active属性设置为True。(4)在Form窗体中添加一个Dat

aSource组件,将其DataSet属性设置为上一步骤添加的ADOQuery组件。至此,完成Delphi程序的数据库的连接。如果数据库中如果存在多个数据表,每个数据表要对应一个ADOQuery组件,且每个ADOQuery组件也

要应对应一个DataSocrce组件,以便程序开发。当数据库中的表过多时,需要在Form窗体上添加多个ADOQuery组件和DataSource组件,使用过多组件将不利于界面设计和统一管理。为此,Delphi开发系统提供了一个新的窗体类型:DataModule窗

体。执行File→New→DataModule命令,打开一个新的DataModule窗体。该窗体的属性很少,不需要做特别设置,一般只需要修改其Name属性值,其他属性均取默认值,可以与向Form窗体中添加组件一样将所有与数据库连接相关的组件添加到DataMod

ule窗体上,如下图所示。DataModule窗体7.2.4数据显示与处理通过上面的操作,完成了Delphi程序与数据库的连接,并可从数据库中获得相应的数据。但是,获得的数据还不能显示出来,如果需要显示这些数据,还需要使用专用的数据显示与处理组件。1.DBGrid组件DBGrid

组件是Delphi系统中最常用的数据显示组件,该组件位于DataControl面板中,如图下所示。1)设置DBGrid组件的属性DBGrid组件的常用属性如下:(1)DataSource:因为需要使用DataSource组件将要显示的数据

提供给DBGrid组件,才能显示数据。所以DBGrid组件的DataSource属性应设置为对应的DataSource组件。(2)Columns:用于选择在DBGrid组件中显示的字段,只有添加到Columns属性中的字段

才能在DBGrid组件中显示。设置Columns属性的方法为:选中DBGrid组件的Columns属性,单击属性值右侧的按钮,弹出Columns编辑对话框。单击AddAllFields,可以将所有可显示的字段添加到DBGrid组件中(在进行本操作前,需

要先设置DBGrid组件的DataSource属性),如下图所示。单击AddNew按钮,可以在DBGrid组件中添加一个字段;单击DeleteSelected按钮,可以将选中的字段从DBGrid组件中移除。

2)设置字段在Delphi程序设计中,可以将字段定义为Columns对象,该对象的主要属性为:FieldName与Title。•FieldName:用于将DBGrid组件中的字段与数据表中的字段关联。•Title:用于设置DBGrid组件中字段的显示效果。该属性为集合

类型,包含的子属性有:Alignment属性用于设置字段的显示位置;Caption属性用于设置显示字段的文本内容;Witdh属性用于设置字段文本的宽度。【例7-1】在Form窗体中显示STUINF表中数据。具体操作步骤如下:(1)建立UDL文件,测试与数据库的连接。(2)在Form窗体添加一个AD

OConnection组件,一个ADODataSet组件,一个DataSource组件和一个DBGrid组件,并设置这些组件的属性,具体如下:•将ADOConnection组件的ConnectionString属性设置为UDL文件,将Connection属性和Ke

epConnection属性值设置为True。•将ADODataSet组件的Connection属性设置为ADOConnection组件,将CommandText属性设置为“SELECT*FROMSTUINF”,Active属性值设置为Tru

e。•将DataSource组件的DataSet属性设置为ADODataSet组件。•将DBGrid组件的DataSource属性设置为DataSource组件,然后单击Columns属性值右侧的按钮,在弹出的Columns编辑对话框中单击AddAllFields按钮,将所有字段添加到

DBGrd组件中。当完成上述设置后,即可在窗体中显示STUINF表中的数据,如下图所示。在窗体中显示数据(3)设置DBGrid组件的Title属性。为了使得DBGrid组件中数据显示得更加规范,还需设置Title属性。选中STUNO

字段,将Title属性集中的Caption属性设置为“学号”,Width属性设置为60,Alignment属性设置为taCenter。采用同样的方法,设置其它字段的属性,最终显示效果如下图所示。2.DBNavigator组件使用DBNavigator组件,可以在不编写任何代码的情况下,实现对数据库

的基本操作。1)DBNavigator组件的属性DBNavigator组件位于组件面板中的DataControls面板中。DBNavigator组件的主要属性如下:•DataSource:用于决定数据来源,应将该属性值设置为DataSource组件。•VisibleBu

ttion:该属性有10个属性值,对应的DBNavigator组件上的10个按钮,这10个属性值均为布尔型,当为True时,显示其对应的按钮,否则不显示该按钮。2)使用DBNavigator组件DBNavig

ation组件共有10个按钮,如下图所示。各按钮的名称与功能如下:•First按钮:将第一条记录设置为当前记录。•Prior按钮:将上一条记录设置为当前记录。•Next按钮:将下一条记录设置为当前记录。•Last按钮:

将最后一条记录设置为当前记录。•Insert按钮:在当前记录前添加一条空记录。•Delete按钮:删除当前记录。•Edit按钮:允许编辑当前记录(极少使用)。•Post按钮:将修改的记录提交到数据库。•Cancel按钮:撤销修改操作。•Refresh按钮:刷新当前数据。3.其它

数据操作组件使用DBGrid组件不仅可以查看数据,还可以对数据进行增加、删除、修改等操作。但是,为了便于输入数据好保持界面的一致性,在实际应用中,一般只用DBGrid组件来显示数据,而将输入、修改、删除数据的操作由其他组件完成

。可以使用DataControls面板中提供的组件来添加、修改和删除数据,这些组件主要包括DBEdit、DBListBox、DBComboBox和DBRadioGroup等组件。这些组件在外观上与对应的Edit组件、ListBox组件、ComboB

ox组件和RadioGroup组件相同,但是在使用时却有较大不同,而这些不同主要表现在组件与数据源的关联上,下面以DBEdit组件为例进行介绍。1)设置DBEdit组件的属性DBEdit组件的主要属性有以下两个:•DataSource:设置DBEd

it组件的数据源,将该属性设置为对应的DataSource组件。•DataField:设置与DBEdit组件对应的数据表中的字段。2)DBEdit组件的作用使用DBEdit组件的方法为:选中DBEdit组件,在其DataField属性值下拉列表框中选择对应的字段名称。当程序运

行时,该字段的当前值即可以通过DBEdit组件显示。【例7-2】使用DataControls面板中相关组件对数据库中数据进行简单操作。以STUINF表中的数据为例,其中的学号、姓名和年龄用DBEdit组件显示;性别用DBRadioG

roup组件显示;院系与班级可以使用DBComboBox组件显示。具体操作步骤如下:(1)按【例7-1】中前两步建立数据库连接并设置数据库连接组件。(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,用于显示“性别”。将Columns属性值设置为2,表示一行显示两列数据。单击Item

s属性值右边的按钮,在弹出对话框中添加两行信息:“男”和“女”。(5)在Form窗体中添加一个DBGrid组件,将DataSource属性设置为DataSource组件,并按照【例7-1】中步骤(3)的方法设置DBGrid组

件的属性。完成设置后,其程序界面如图下所示。可以程序界面中添加、删除和修改记录,而不用另外编号代码。7.3动态数据操作使用DataControls面板中的组件可以在不编写代码的情况下实现基本的数据操作。但是这样的方法有两个缺点:一个是没有数据查询功能,而这个功能在数据

库中非常重要的;另一个是不能获得当前记录的值,这使得对数据的操作非常不便。为此,Delphi系统允许直接使用SQL语句来动态操作数据。7.3.1ADOQuery组件与数据操作ADOQuery组件是一个功能十分强大的数据操作组件,使用该组件可以再代码中

插入SQL语句来动态操作数据;此外,ADOQuery组件还提供了多种方法来直接操作数据,提高了程序设计的效率。下面介绍如何使用ADOQuery组件的方法来操作数据库。ADOQuery组件中用于进行数据操作的方法主要有以下几个

:•First:将与ADOQuery组件连接的数据表中的第一条记录设置为当前记录。•Prior:将上一条记录设置为当前记录。•Next:将下一条记录设置为当前记录。•Last:将最后一条记录设置为当前记录。•Insert:在数据表中添加一条记录。•Delete:删除当前数据记录。•Po

st:将数据表中的数据提交到数据库。•Refresh:刷新当前数据表中的数据。【例7-3】以【例7-2】中的数据为例,使用ADOQuery组件实现DBNavigator组件的基本功能。本例要实现的基本功能包括:添加、删除记录,将第一条记录、最后一条

记录、上一条记录和下一条记录设置为当前记录以及提交记录。操作步骤如下:(1)在Form窗体添加一个ADOConnection组件,一个ADOQuery组件和一个DataSource组件。将ADOConnec

tion组件的ConnectionString属性值设置为UDL文件;Connected属性和KeepConnected属性均设置为True。设置ADOQuery组件的Connection属性为ADOConnection组件,SQL属性设置为“SELECT*FROMSTUINF

”,将Active属性设置为True。将DataSource组件的DataSet属性设置为ADOQuery组件。(2)在Form窗体中添加一个DBGrid组件,一个DBRadioGroup组件和5个DBEdit组件,具体设置同【例7-2】对应组件的设置。(3)在Form窗体添加7个Button组

件,创建界面,如下图所示。(4)为“上一条”按钮的OnClick事件添加如下代码,将上一条记录设置为当前记录。procedureTForm1.Button5Click(Sender:TObject);beginADOQue

ry1.Prior;end;(5)为“下一条”按钮的OnClick事件添加如下代码,将下一条记录设置为当前记录。procedureTForm1.Button6Click(Sender:TObject);beginADOQuery1.Next;end;(6)为“首记录”

按钮的OnClick事件添加如下代码,将第一条记录设置为当前记录。procedureTForm1.Button3Click(Sender:TObject);beginADOQuery1.First;end;(7)为“尾记录”按钮的OnClic

k事件添加如下代码,将最后一条记录设置为当前记录。procedureTForm1.Button4Click(Sender:TObject);beginADOQuery1.Last;end;(8)为“添加”按钮的OnClick事件添加如下代码,在当前记录前添加一条空记录。procedureTF

orm1.Button1Click(Sender:TObject);beginADOQuery1.Insert;end;(9)为“删除”按钮的OnClick事件添加如下代码,删除当前的记录。procedureTF

orm1.Button2Click(Sender:TObject);beginADOQuery1.Delete;end;(10)为“提交”按钮的OnClick事件添加如下代码,将当前缓冲区中数据提交到数据库。procedureTForm1.Button

7Click(Sender:TObject);beginADOQuery1.Post;end;7.3.2在ADOQuery组件中使用SQL语句前面介绍了使用ADOQuery组件进行处理数据的方法,使用这两种组件,可以在

不编写代码的情况成对数据库中的数据进行操作,但也有其不足之处,主要表现为对数据操作的功能有限,不能灵活对数据进行操作。为此,可以将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组件连接,使用语句为:ADOQue

ry.Open;7.4数据库程序设计实例为了帮助读者更好地掌握如何在Delphi系统中进行数据库程序设计,本节将制作一个通讯录。要求通讯录具有添加、删除、修改通讯信息和按指定条件查询通讯信息的功能。7.4.1数据库设计在数据库程序设计中,

建立数据库与数据表是最基本也是最重要的内容之一。1.创建数据库在建立数据库前应选择要使用的数据库系统,目前在中小型应用系统开发中,广泛使用的数据库系统是MSSQLServer。这里以SQLServer2000为数据库开发平台进行介绍。创建数据

库的操作步骤如下:(1)启动SQLServer数据库系统,进入企业管理器,如下图所示。(2)在左侧的控制台根目录中右击“数据库”选项,在弹出的快捷菜单中选择“新建数据库”命令,弹出“数据库属性”对话框。在“名称”文本框中输入数据库的名称,这里输入MyDa

taBase,然后单击“确定”按钮,完成数据库的建立。2.创建数据表建立好数据库后,还需要在数据库中创建数据表。1)确定数据表格式在创建数据表之前,应先确定数据表的格式,包括表中各个字段的名称、含义、数据类型以及时否可以为空等。本例的数据表结构见下表。字段名含义

类型说明NAME姓名varchar(20)主键SEX性别smallint0:男,1:女,不空GRP分组varchar(12)不空MOBILE手机号码varchar(12)可空HOME住宅电话varchar(12)可空BUSINESS办公电话varchar(12)可空EMAIL邮箱

地址varchar(32)可空ADDRESS联系地址varchar(120)可空通行信息表的数据结构2)建立数据表确定数据表的结构后,接下来建立数据表,具体操作步骤如下:(1)在企业管理器的控制台根目录中展开前面已经创建

的MyDataBase数据库,如下图所示。(2)右击“表”选项,在弹出的快捷菜单中选择“新建表”命令,打开表设计窗口,建立数据表,如下图所示。建立数据表(3)右击“NAME”字段所在的行,在弹出的快捷菜单中选择

“设置主键”命令,将NAME字段设置为主键。(4)单击工具栏中的“保存”按钮,在弹出的“选择名称”对话框中输入数据表的名称,如下图所示。单击“确定”按钮,完成数据表的创建。输入数据表的名称3.创建UDL文件要想使用组件连接数据,需要先建立一个

用于数据连接的UDL文件,其操作步骤如下:(1)打开Windows中的记事本,执行“文件”→“另存为”命令,打开“另存为”对话框。将保存类型设置为“所有文件”,将文件名设置为link.udl,单击“保存”按钮,完成UDL文件的创建。(2)双

击刚刚建立的UDL文件,打开“数据链接属性”对话框,单击“提供程序”选项卡。(3)选择MicosoftOLEDBProviderforSQLServer选项后单击“下一步”按钮,打开“连接”选项卡。设置服务器名称为本机名称,登录服务器的信息为“使用WindowsN

T集成安全设置”。选中“在服务器上选择数据库”单选按钮,在下拉列表框中选择前面创建的数据库MyDataBase,如下图所示。然后单击“测试连接”按钮,如果设置成功,则弹出提示成功的对话框。设置数据链接属性7.4.2程序功能与实现建立数据库并测试成功后,下面进行程序功能模块

设计。本程序可以分为数据显示、数据输入、数据查询、数据修改和数据删除几个模块。1.数据显示模块在Delphi程序设计中,使用DBGrid组件来显示数据表中的数据。为了方便起见,通常单独为DBGrid组件关联一个ADODataSet组件,使其独立完成数据的显示。操作步骤如下:(1)在F

orm窗体中添加一个ADOConnection组件,一个ADODataSet组件,一个DataSource组件和一个DBGrid组件。(2)选中ADOConnection组件,将ConnectionString属性设置为UDL文件,将Connected属性和KeepConnected属性

设置为True。(3)选中ADODataSet组件,将Connection属性值设置为ADOConnection组件。在CommandText属性中添加SQL语句:SELECT*FROMCOMMINF,并将Active属性设置为True。(4)选择DataSource

组件,将DataSet属性设置为DataSet组件。(5)选中DBGrid组件,将DataSource属性设置为DataSource组件。选中Columns属性,单击属性值右边的按钮,在弹出的对话框中单击AddAllFields按钮,将所有

字段加到DBGrid组件中显示。(6)依次选中DBGrid组件中的Columns对象,将Title属性集中的Caption属性设置为相应字段的名称。此时的界面如下图所示。(7)要实现数据库的增加、修改、删除与查询数据功能,还需要添加进行数据操作的组件。添加组

件后的界面如下图所示。DBGrid组件界面(8)在Form窗体的OnCreate事件中添加如下代码,将通讯录中的联系人分为家人、朋友、同事、同学、网友和其他几类,并将朋友作为默认分类。数据显示模块界面procedureTFor

m1.FormCreate(Sender:TObject);beginComboBox1.Items.Add('家人');ComboBox1.Items.Add('朋友');ComboBox1.Items

.Add('同事');ComboBox1.Items.Add('同学');ComboBox1.Items.Add(‘网友’);ComboBox1.Items.Add(‘其他’);ComboBox1.ItemIndex:=1;ComboBox2.Items.Add('家人');

ComboBox2.Items.Add('朋友');ComboBox2.Items.Add('同事');ComboBox2.Items.Add(‘同学’);ComboBox2.Items.Add('网友');ComboBox2.Items.Add('其他');ComboBox2.It

emIndex:=1;end;2.数据录入模块使用ADOQuery组件作为动态调用SQL语句的组件。在Form窗体中添加一个ADOQuery组件和一个DataSource组件,将ADOQuery组件的Connection属性设置为ADOConnection组件,将DataSou

rce组件的DataSet属性设置为ADOQuery组件。选中界面中的“添加”按钮,在其OnClick事件中添加如下代码,实现在数据库中添加记录的功能。procedureTForm1.Button1Click(Sender:TObject);v

arSQLSTR:string;beginifEdit1.Text=''ThenBeginMessageDlg('名称不能为空!',mtWarning,[mbOK],0);Edit1.SetFocus;endelseBeginSQLSTR:=‘insertintoCOMMI

NFvalues(:iname,:isex,:igroup,:ihome,:ibusiness,:imail,:iaddr)’;ADOQuery1.Close;ADOQuery1.SQL.Clear;AD

OQuery1.SQL.Add(SQLSTR);ADOQuery1.Parameters.ParamByName(‘iname’).Value:=Edit1.Text;ADOQuery1.Parameters.ParamByName(‘isex’).Value:=R

adioGroup1.ItemIndex;ADOQuery1.Parameters.ParamByName(‘igroup’).Value:=ComboBox1.Items[ComboBox1.ItemIndex];ADOQuery1.Parameters.ParamByNa

me('imobile').Value:=Edit2.Text;ADOQuery1.Parameters.ParamByName('ihome').Value:=Edit3.Text;ADOQuery1.Parameters.ParamByName(

'ibusiness').Value:=Edit4.Text;ADOQuery1.Parameters.ParamByName('imail').Value:=Edit5.Text;ADOQuery1.Parameters.ParamByName('iaddr').Valu

e:=Edit6.Text;ADOQuery1.ExecSQL;DBGrid1.DataSource:=DataSource1;ADODataSet1.Close;ADODataSet1.Open;ADODataSet1.Last;E

dit1.Text:='';Edit2.Text:='';Edit3.Text:='';Edit4.Text:='';Edit5.Text:='';Edit6.Text:='';end;end;3.数据查询模块

先设置查询条件,其中,姓名的优先级最高,其次是手机号,最后是分类。当姓名不为空时,以姓名作为查询条件;当姓名为空而手机号不为空时,以手机号作为查询条件;只有当姓名栏与手机号码栏均为空时,才将分类作为查找条

件。选中“查询”按钮,在其OnClick事件中添加如下代码,实现查询功能。procedureTForm1.Button4Click(Sender:TObject);beginADOQuery1.Close;ADOQuery1.SQL.Clear;ifEdit7.Text<>'

'beginADOQuery1.SQL.Add('select*fromCOMMINFwhereNAME=:iname');ADOQuery1.Parameters.ParamByName('iname').Value:=Edit7.Te

xt;endelseifEdit8.Text<>''beginADOQuery1.SQL.Add('select*fromCOMMINFwhereMOBILE=:imobile');ADOQuery1.Parameters.ParamByName('im

obile').Value:=Edit8.Text;endelsebeginADOQuery1.SQL.Add(‘select*fromCOMMINFwhereGRP=:igroup');ADOQuery1.Parameters

.ParamByName('igroup').Value:=ComboBox2.Items[ComboBox2.ItemIndex];end;DBGrid1.DataSource:=DataSourc

e2;ADOQuery1.Open;end;4.显示查询结果查询完毕后,在DBGrid组件中显示符合查询条件的记录,这些记录可能多于一条。双击某条记录,可以将该记录显示在“用户信息”选项区中对应的组件上。实现

该功能的方法为:选中DBGrid组件,在其OnDBClick事件中添加如下代码:procedureTForm1.DBGrid1DblClick(Sender:TObject);beginEdit1.Text:=DBGrid1.DataSource.DataSet.FieldByName('NAME

').AsString;RadioGroup1.ItemIndex:=DBGrid1.DataSource.DataSet.FieldByName('SEX').AsInteger;ComboBox1.Text:=DBGrid1

.DataSource.DataSet.FieldByName('GRP').AsString;Edit2.Text:=DBGrid1.DataSource.DataSet.FieldByName('MOBILE').A

sString;Edit3.Text:=DBGrid1.DataSource.DataSet.FieldByName('HOME').AsString;Edit4.Text:=DBGrid1.DataSource.

DataSet.FieldByName('BUSINESS').AsString;Edit5.Text:=DBGrid1.DataSource.DataSet.FieldByName('EMAIL').AsStr

ing;Edit6.Text:=DBGrid1.DataSource.DataSet.FieldByName('ADDRESS').AsString;end;5.修改当前数据可以在“用户信息”选项区中以“姓名”为修改条件,修改除“姓名”外的所有数据,然后将修改后数据

提交到数据库。实现该功能的方法为在“修改”按钮的OnClick事件中添加如下代码:procedureTForm1.Button2Click(Sender:TObject);beginADOQuery1.Close;ADOQuery1.S

QL.Clear;ADOQuery1.SQL.Add('updateCOMMINFsetsex=:isex,grp=:igroup,mobile=:imobile,');ADOQuery1.SQL.Add('home=:ihome,business=:ibusiness,emai

l=:iemail,address=:iaddress');ADOQuery1.SQL.Add('wherename=:iname');ADOQuery1.Parameters.ParamByName('iname')

.Value:=Edit1.Text;ADOQuery1.Parameters.ParamByName(‘isex’).Value:=RadioGroup1.ItemIndex;ADOQuery1.Parameters.ParamB

yName(‘igroup’).Value:=ComboBox1.Items[ComboBox1.ItemIndex];ADOQuery1.Parameters.ParamByName('imobile').Value:=Edit2.Text;ADOQuery1.Parameters.Pa

ramByName('ihome').Value:=Edit3.Text;ADOQuery1.Parameters.ParamByName('ibusiness').Value:=Edit4.Text;ADOQuery1.Parameters.ParamBy

Name('iemail').Value:=Edit5.Text;ADOQuery1.Parameters.ParamByName('iaddress').Value:=Edit6.Text;ADOQuery1.ExecSQL;DB

Grid1.DataSource:=DataSource1;ADODataSet1.Close;ADODataSet1.Open;end;6.删除指定信息在“删除”按钮的OnClick事件中添加加入如下代码,实现删除指定联系人的功能。procedureTForm1.Butt

on3Click(Sender:TObject);beginifEdit1.Text=''ThenBeginMessageDlg('请先选择信息!',mtError,[mbOK],0);Edit1.SetFocus;endelseBeg

inADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add('deletefromCOMMINFwherename=:iname');ADOQuery1.Parameters.P

aramByName('iname').Value:=Edit1.Text;ADOQuery1.ExecSQL;DBGrid1.DataSource:=DataSource1;ADODataSet1.Close;ADODataSet1.

Open;Edit1.Text:='';Edit2.Text:='';Edit3.Text:='';Edit4.Text:='';Edit5.Text:='';Edit6.Text:='';end;end;至此,程序主体功能设计完毕,程序运行效果如下图所示。通讯录运行效果第七章结束

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?