登陆注册
36209800000028

第28章 数据库应用程序设计(2)

Edit方法设定数据表为编辑状态,此时可对数据表进行编辑。

(14)Post方法

Post方法确认对数据表的修改。

(15)Cancel方法

Cancel方法取消对数据表的修改。

(16)EmptyTable方法

EmptyTable方法删除数据表中的所有记录。

2.Query组件

同Table组件类似,Query组件在组件模板的【BDE】选项卡中(Delphi5是在【DataAccess】选项卡中),它通过BDE与数据表连接,实现对数据表的访问,是数据库应用程序中最常用的组件之一。Query组件是一种用SQL语句访问数据库的组件。同Table组件最大的区别在于,Query组件只用DatabaseName属性指定数据库名,没有用来指定数据表的TableName属性,它访问的数据表名是用它的SQL属性来指定的。因此,Table组件只能访问一个在设计时设定的数据表,而Query组件可以在运行时通过改变其SQL属性,访问多个数据表。

1)Query组件的SQL属性

Query组件的属性和方法,大都和Table组件类似,而SQL属性是Query组件独有的。

(1)SQL语句简介

如前所述,SQL语言是关系数据库通用的结构化查询语言。目前,几乎所有的关系数据库系统都支持SQL语言。

SQL由3部分组成:

数据定义语言,用于定义数据库;

数据操作语言,用于对数据库中的数据进行操作;

数据控制语言,用于提供对数据库安全性的防护。

支持SQL编程是Delphi的一大特征。使用Delphi进行数据库应用程序设计时,可以使用SQL数据操作语言实现对数据库的访问。

SQL数据操作语言的语句有以下4条。

①Select语句。用于从数据库的一个或多个数据表中查询数据,该语句所含元素很多,其语句的基本格式为:

Select字段名列表

From数据表名列表

[Where查询条件]

OrderBy字段名

其中:

部分为可选子句。

“Select字段名列表”子句,按列表中的字段名显示查询结果,其中的字段名列表,可为所有字段,用“”表示;当有多个字段时,多个字段间用逗号分开;可为不同数据表中的字段,表示为“表名.字段名”;可为SQL表达式。

SQL表达式可为“字段名X字段名”形式,其中X为四则算术运算符+(加)、-(减)、(乘)、(除)或逻辑运算符AND(逻辑“与”)、OR(逻辑“或”)、XOR(逻辑“异或”)、NOT(逻辑“非”)。

SQL表达式也可为“内建函数(字段名)”形式,其中内建函数有SUM(求一列总和)、COUNT(求一列中值的个数)、COUNT()(求查询结果的行数)、AVG(求一列的平均值)、MAX(求一列中的最大值)、MIN(求一列中的最小值)。

“From数据表名列表”子句,从列表中的数据表中查询数据,其中的数据表名列表,列出Select子句中字段所在的数据表名;若为多个数据表,则用逗号分开。

“Where查询条件”子句,按其中的查询条件查询数据,查询条件可以使用比较运算符(不等于),如“whereage=30”,查询年龄大于等于30岁的人员记录;也可以用逻辑运算符将两个比较运算连接起来,如“where(age=30)AND(sex=male)”,查询年龄大于等于30岁的男性人员记录;可用模式匹配符Like实现模糊查询,如“Wherenamelike李%”,查询姓“李”的人员记录,这里“%”代表任意多个字符,也可用“李”,这里代表一个任意字符。

“OrderBy字段名ASCDESC”子句,将查询结果按By后面的字段排序,可选部分ASC或DESC指定升序排列或降序排列,默认为ASC,如“OrderByageDESC”,将查询结果按年龄降序排列。

②Insert语句。用于向数据表中添加一个新的记录,其语句格式为:

Insert数据表名[(字段名列表)

Values(字段值列表)其中:

“Insert数据表名[(字段名列表)”子句,向指定数据表中添加一个记录,若缺省字段名列表,则表示记录的所有字段都写入字段值;否则,只对所列字段写入字段值,其他字段空值。

“Values(字段值列表)”子句,指定添加记录的各字段值,若Insert子句中字段名列表缺省,则这里必须给出所有字段的值;否则,只给出字段名列表中字段的值;字段值应和字段名顺序一致。

③Updata语句。用于修改数据表中的某个记录的数据,其语句格式为:

Updata数据表名Set字段值列表Where修改条件其中:

数据表名指定被修改的数据表。

字段值列表格式为:字段名1=字段值1,字段名2=字段值2,…修改条件的格式和Select语句中Where子句的查询条件一样。

④Delete语句。用于删除数据表中符合条件的一个或几个数据记录,其语句格式为:

Delete数据表名

[Where删除条件]

其中:

若“Where删除条件”子句缺省,则删除数据表中的所有记录。

删除条件的格式和Select语句中Where子句的查询条件一样。

需要了解更多SQL语言内容的读者,可以参考SQL方面的专门资料。

(2)设计时设置Query组件的SQL属性

如前所述,同Table组件一样,Query组件也用DatabaseName属性指定要访问的数据库。

但Query组件没有TableName属性指定要访问的数据表,而是用它的SQL属性来指定要访问的数据表。可以在设计时设置Query组件的SQL属性,实现所谓的“静态查询”;也可以在程序代码中设计Query组件的SQL语句,实现程序运行时的动态数据表的访问。这里先介绍设计时设置Query组件的SQL属性的方法。

Query组件的SQL属性是编辑型属性。在放置Query组件的窗体上激活Query组件,按需要可先设置好它的其他属性(同Table组件一样,这时不能设置Active属性),特别是DatabaseName属性,然后在对象检查器中找到SQL属性,单击该属性值栏右端的【…】按钮,弹出【StringListEditor】对话框,如图12-7所示。

按查询要求,在编辑区中输入上面讲的Select语句,然后单击【OK】按钮,关闭对话框。

若以上的设置没有问题,这时可以将组件的Active属性值设置为True。如果窗体上已经设计了DataSource组件和相关的数据控制组件,这时静态查询的结果就会立即显示在窗体中。

(3)程序代码中设计Query组件的SQL语句

在程序代码中设计Query组件的SQL语句,实现程序运行时的动态数据表的访问是数据库应用程序访问数据库的主要形式。

程序代码中设计的SQL语句的格式为:

下面对代码段做进一步的解释。

Close是Query组件的方法,要改变Query组件的SQL属性,先用方法Close关闭组件。

Clear是Query组件的方法,要为SQL属性赋新SQL语句,先用方法Clear清除原SQL语句。

Add是Query组件的方法,用于为Query的SQL属性赋予新的SQL语句。

Add(SQL语句)中的SQL语句,可以用一行代码给出一条完整的SQL语句;为避免代码行过长,也可以用几行代码给出一条完整的SQL语句,每行都冠以SQL.Add。

也可表示为:

在程序代码中设计SQL语句,允许使用可变参数。如从公司职员表(zhiyuan)中静态查询姓名为张华的职员,SQL语句格式为:

SelectFromzhiyuanWherename=张华。

要在程序运行中输入查询职员的姓名,实现动态查询,就要使用可变参数,SQL语句格式变为:

SelectFromzhiyuanWherename=:varname这里用“:”表示“varname”为可变参数,然后用方法ParamByName为可变参数赋值:

ParamByName(varname).AsString:=inputname;

Inputname为字符串变量,在SQL语句前动态赋值,该语句将Inputname变量值赋给可变参数varname,实现动态查询。所以该语句为可选,有几个可变参数,就有几条该语句;若无可变参数,则不用该语句。

Prepare为Query组件的方法,用来通知BDE,参数设置完毕,准备执行SQL语句。

Open和ExecSQL都是Query组件的方法,用来打开Query组件,执行SQL语句,只是执行SQL语句后,若有返回值,如执行Select语句,用Open方法;若无返回值,如执行Insert、Updata、Delete语句,用ExecSQL方法。

3.StoredProc组件

StoredProc组件在组件模板的【BDE】选项卡中(Delphi5中是在【DataAccess】选项卡),它通过操作远程数据库服务器中的存储过程,实现对数据库的访问。

存储过程是存放于数据库服务器上的一组数据库操作命令,用来在数据库中完成一系列频繁重复的操作,并将操作结果传送给客户程序。存储过程需要必要的输入参数,操作结果用输出参数的形式返回。StoredProc组件通过Params方法将输入参数传送给存储过程,输出参数通过与StoredProc组件连接的DataSource组件传送给数据控制组件显示出来。

1)StoredProc组件的属性

StoredProc组件的主要属性有以下几个。

(1)DatabaseName属性

DatabaseName属性用于指定StoredProc组件要访问的数据库。该属性的属性值可以在对象检查器属性值栏的编辑框中直接输入,也可以在其下拉列表中选择。

(2)StoredProcName属性

StoredProcName属性用于指定StoredProc组件要操作的存储过程。该属性的属性值可以在对象检查器属性值栏的编辑框中直接输入,也可以在其下拉列表中选择。

(3)Active属性

Active属性决定StoredProc组件的状态。该属性为布尔型属性,若其值为True,则StoredProc组件被激活,可以操作存储过程;若其值为False,则不能操作存储过程。在StoredProc组件的DatabaseName属性和StoredProcName属性设置之前,不能将该属性值设置为True;反之,在将该属性设置为True之后,若修改DatabaseName属性或StoredProcName属性,该属性值自动变为False。

(4)Params属性

Params属性包含着StoredProc组件所操作存储过程的输入参数。当设置了StoredProc组件的DatabaseName属性和StoredProcName属性之后,单击Params属性值栏右端的【…】按钮,弹出【EditingStoredProc组件名.Params】对话框,可以看到该StoredProc组件所操作存储过程的输入参数。

(5)Prepared属性

Prepared属性表明服务器是否做好执行存储过程的准备。该属性为只读布尔型属性,若其值为True,则表示服务器做好准备;若其值为False,则没有做好准备。用StoredProc组件的Prepare方法,可以使服务器准备好。其默认值为False。

2)StoredProc组件的方法

StoredProc组件的主要方法有以下几种。

(1)ParamByName方法

ParamByName方法用来在动态查询中为可变参数赋值。

(2)Prepare方法

Prepare方法通知服务器做好执行存储过程的准备。

(3)Close方法

Close方法关闭StoredProc组件。

(4)ExecProc方法

ExecProc方法执行存储过程。

(5)Open方法

Open方法打开StoredProc组件,执行存储过程。

这两个方法的区别在于,ExecProc只返回参数,而Open返回存储过程的执行结果集。

3)StoredProc组件的使用方法

(1)在数据库服务器上创建存储过程。

(2)在窗体中放置StoredProc组件。

(3)按前面介绍的方法设置StoredProc组件的属性,主要是DatabaseName、StoredProcName、Active等属性。

(4)在窗体中添加其他组件并设置它们的属性。

(5)设计StoredProc组件调用存储过程的程序代码:

这里存储过程只有一个输入参数,用StoredProc1.Params[1].AsString:=inputname语句将参数传送给存储过程。

(6)访问输出参数和结果集。

如上所述,存储过程有一个输出参数,是一个指示存储过程执行是否成功的整数类型的代码,为0表示执行成功。访问输出参数用如下语句,输出参数是作为第一个(序号为0)参数。

存储过程的执行结果集用如下形式的语句实现,假设某一结果通过一编辑框显示。

其中n为该结果在结果集中的序号,序号从0开始。

12.2.2DataSource组件

DataSource组件位于组件模板的【DataAccess】选项卡中,是一个不可见组件。

DataSource组件的使用比较简单,但却是Delphi数据库应用程序中最重要的组件之一。

DataSource组件是连接数据集组件和数据控制组件的桥梁,一个Delphi数据库应用程序至少有一个DataSource组件。

DataSource组件的属性不多,主要有以下3个。

1.DataSet属性

同类推荐
  • FlashCS动画制作基础

    FlashCS动画制作基础

    适合爱好flash动画制作的初、中级读者作为入门学习的参考书,还可以供从事网页制作与动画设计的人员参考,同时也可以作为初、中级电脑短训班的培训教材,对有一定经验的flashcs5使用者也有很高的参考价值。
  • 一本书读懂大数据

    一本书读懂大数据

    本书是深入研究互联网思维的经典之作,从互联网思维的定义到互联网思维应用的具体案例表现。作者深入浅出、条分缕析,全面阐述互联网思维的内核与精神,逐一点评当前关于互联网思维的各种观点。本书从最初级的互联网思维应用到高端的粉丝经济,平台建设,自媒体营销的方法都有详细讲解介绍。让读者了解什么是互联网思维的同时还能学会把互联网思维运用到自己的工作学习已经生活中。
  • 创业在微软

    创业在微软

    身处软件巨擘微软之中,何来“创业”二字?本书详尽勾勒了微软亚洲工程院(ATC)的成长历程,披露了工程院人在“创业”过程中不为人知的种种酸甜苦辣,生动展现了工程院的独特文化,并从另一个角度展现了其领袖人物张宏江博士的心路历程和管理思想。
  • 组态软件控制技术

    组态软件控制技术

    监控组态软件是完成数据采集与过程控制的专用软件,它以计算机为基本工具,为实施数据采集、过程监控、生产控制提供了基础平台和开发环境。本书从应用角度出发,详细介绍了组态软件应用程序的开发过程。对窗口界面编辑、动画链接、实时和历史趋势、安全机制、I/O设备连接,以及生产应用等内容都做了非常详细的介绍。MCGS是优秀的监控组态软件之一,它功能强大、使用方便,可以非常容易地实现监视、控制、管理的各项功能,并可提供软、硬件的全部接口,方便、快速地进行系统集成,构成不同需求的数据采集与监控系统。本书可作为高等学校计算机应用、自动控制、电子技术、机电技术专业的教材,同时还可作为相关专业工程技术人员的自学用书。
  • 办公设备使用与维护

    办公设备使用与维护

    信息技术的发展正前所未有地改变着人类生活的每一个层面,以信息化、全球化和高科技为特征的新经济浪潮滚滚而来,机遇与挑战并存。办公自动化是信息化时代最重要的标志之一,办公要实现自动化,当然离不开办公设备。
热门推荐
  • 江南美人

    江南美人

    小说通过对在外游子回乡几十天所见所闻所历的描述,回忆和现在衔接,想象和现实交织,深刻而又直白地揭示了江南土地上最基层农村在上个世纪八十年代到本世纪初这三十年的变迁,以及这些变迁对农民、小城镇居民生活、物质、内心、精神的深远影响。
  • 不存在的北极洲

    不存在的北极洲

    我們需要有人見證我們的生命。地球上有好幾億人口,而誰的生命又有真正的意義呢?但是透過婚姻,你許下承諾,要去照顾一切。無論是好的事,還是壞的事,可怕的事。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 当代体育与大众传媒

    当代体育与大众传媒

    由张珂、张云、石磊主编的《当代体育与大众传媒》内容主要包括体育的历史沿革与发展,各种媒体形态的发展与现状,体育与传媒的互动历程,当代体育与大众媒介的相互影响以及奥林匹克运动中的体育传播等几个方面。由乔培基教授编写的《当代体育与大众传媒》以体育与媒介二者的关系为切入点,从体育专业、传媒专业的角度,阐述了体育与传媒的互动历程,揭示了二者的辩证关系。同时,全书涵盖了传媒业界最全面的表现形式,展现了体育与传媒界互动的最新形态。《当代体育与大众传媒》既可作为体育、传媒相关领域从业人员的重要参考资料,也可选作大专院校相关专业的实用教材。
  • 名侦探柯南之飘落的樱花

    名侦探柯南之飘落的樱花

    当然是新兰文啦嘻嘻~喜欢整柯南~有一种守护叫等待,小兰一直在等待新一,有一种等待叫守护,新一一直在守护小兰加油!
  • 封神手札

    封神手札

    小胖子胡天罡,重阳登高之时不慎坠落山崖,穿越到了殷商时期,更加不慎的是拜入了申公豹的门下,开启了装逼与被追杀之旅,在途中看清了封神的真相,与不一样的截教和纣王。
  • 三体游戏·囚笼

    三体游戏·囚笼

    为了拯救人类,以克伦希尔为首的组织建立了虚拟现实的“囚笼”游戏,将人类全体转化成为电子生命储存到游戏中,以便保留人类文明。商博良作为唯一一个看透组织意识的人,谢绝了这份好意,决心在地球上与三体人奋战到底。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 总裁的私有逃妻

    总裁的私有逃妻

    他们本应该是青梅竹马,相爱到老,可惜身份悬殊。排除万难,好不易你情我浓,他却成了她的杀父仇人。从此之后,咫尺天涯,他拼命追捕她,她却一次次逃离他的世界……她注定是他的私有逃妻。
  • 青橘女孩

    青橘女孩

    每个人的人生都是一本书每个不曾与你认识的人都将成为这本书的读者你是归途亦是迷途,没有救赎?