Delphi-数据库高级应用技术.ppt

上传人:wuy****n92 文档编号:70745793 上传时间:2023-01-27 格式:PPT 页数:34 大小:875.50KB
返回 下载 相关 举报
Delphi-数据库高级应用技术.ppt_第1页
第1页 / 共34页
Delphi-数据库高级应用技术.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《Delphi-数据库高级应用技术.ppt》由会员分享,可在线阅读,更多相关《Delphi-数据库高级应用技术.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第10章章 数据库高级应用技术数据库高级应用技术本章主要内容:事务的概念Delphi中的事务控制Delphi中使用存储过程主从结构的数据库应用程序10.1 事务处理事务处理10.1.1 事务的概念事务的概念当用Delphi创建数据库应用时,Delphi提供了用于所有数据库访问的事务控制。一个事务(transaction)是指在一个数据库中的一张或多张表上执行的一组相关动作,在这一组动作被永久提交前,必须成功完成所有动作,如果该组动作中有一个动作操作失败,那么所有动作就会被取消。10.1.2 事务的特性事务的特性事务具有不可分性、一致性、隔离性和持续性。1.不可分性事务是一个工作单元,是在应用

2、程序的BEGINTRANSACTION和ENDTRANSACTION语句之间发生一系列操作。事务只执行一次,且是不可分的,即完成全部工作或者不做任何工作。10.1 事务处理事务处理2.一致性事务是一个完整的单元,因为它保持数据的一致性,将数据从一种数据一致状态转换到另一种数据一致状态。3.隔离性事务是一个隔离单元,允许可并行执行的事务表现得像是在系统中运行的唯一事务。隔离性要求即使同时可能有其他事务正在运行,每个事务也像是操作数据存储区的唯一事务一样。事务应从不查看其他事务的中间阶段。4.持续性事务也是一个恢复单元。如果事务成功,则即使在提交后计算机立即崩溃,系统仍将保证更新该事务。专用记录允

3、许系统的重新启动过程完成未完成的操作,以使事务可持续。10.1 事务处理事务处理10.1.3 Delphi中事务控制的方式中事务控制的方式1.Delphi中事务控制的方式Delphi中事务控制的方式有两种:一种是隐式事务控制,一种是显式事务控制。在默认情况下,Delphi通过ADO为应用程序提供隐式事务控制。当应用程序处于隐式事务控制时,Delphi为数据集中的每个记录的写操作进行隐式事务控制。它提交每一个独立的写操作,如Post和AppendRecord。有两种显式控制事务方式:一种是使用Delphi组件(如TADOConnection)所提供的方法和属性进行事务控制。另一种是直接发送SQL

4、命令到支持事务的数据库服务器进行事务控制。许多数据库都提供自己的事务处理方式。10.1 事务处理事务处理2.使用TADOConnection控制事务(1)事务处理过程通常事务处理有以下这样一个过程:BeginTrans;/开始一个新事务处理 try /捕捉异常 .数据库更新操作(如delete、insert、update等).CommitTrans;/操作成功,提交事务 except /异常处理 RollBackTrans;/操作失败,回退事务end;10.1 事务处理事务处理(2)开始一个事务开始一个事务使用BeginTrans方法。当开始一个事务时,后来的所有读写数据库的操作都发生在那次事

5、务的环境中,直到事务被明确地终止或提交了新事务。使用例句:Level:=ADOConnection1.BeginTrans;BeginTrans方法返回该事务的嵌套级别。(3)提交一个事务为了做永久性修改,事务完成后必须使用CommitTrans方法提交。例如,下列语句将终止在上例中开始的事务:ADOConnection1.CommitTrans(4)回退一个事务为了取消对数据库的修改,必须用RollbackTrans方法回退一个事务。10.1 事务处理事务处理例如:下列语句将回退一个事务:ADOConnection1.RollbackTrans;(5)判断是否正在处理事务判断是否正在处理事务

6、,可以通过InTransaction属性。例:IFADOConnection1.InTransactionTHENADOConnection1.RollbackTrans;(6)使用IsolationLevel属性IsolationLevel属性描述TADOConnection组件事务的独立级别,事务的独立级别决定了事务与其它作用于相同表的事务是如何相互作用的。10.1 事务处理事务处理10.1.4 事务处理的实例事务处理的实例下面以一个简单的例子说明事务的处理过程。【例10-1】Delphi对TDBGrid组件使用的是默认的隐含事务控制,在表格修改一条记录后,当记录指针移动以后,数据就被写入

7、到数据库中了。若表格很大、修改项目又很多时,如果中途想要放弃所作的修改,很难使表格恢复原样。这时就可以使用事务处理来解决这样的问题。编程实现对数据库dbdemos.mdb的表employee的事务操作。【实现步骤】1.首先建立应用程序。2.定制窗体10.1 事务处理事务处理图10-1程序设计界面10.1 事务处理事务处理组件名属性属性值说明ADOConnection1ConnectionString使用ConnectionString设置对话框设置该属性,连接到数据库dbdemos.mdb。ADOTable1ConnectionADOConnection1指定使用的数据连接组件。TableNa

8、meemployee指定打开的数据表名ActiveTrue打开数据集。DataSource1DataSetADOTable1指定使用的数据集。DBGrid1DataSourceDataSource1为表格指定数据源。ReadOnlyTrue表格设置为只读btnBeginCaption开始事务EnableTrue允许使用按钮btnCommitCaption提交事务EnableFalse禁止使用按钮btnRollBackCaption回退事务EnableFalse禁止使用按钮btnCloseCaption关闭EnableTrue允许使用按钮表10-2各组件属性设置10.1 事务处理事务处理3.编写

9、代码4.程序执行分析启动程序后,点击【开始事务】按钮,在表格中修改几条记录,然后点击【提交事务】按钮,关闭程序后重新进入,会发现修改内容已写入数据库中。点击【开始事务】按钮,在表格中修改几条记录,然后点击【回退事务】按钮,关闭程序后重新进入,再次查看表格内容,会发现数据库没有被修改。10.2 使用存储过程使用存储过程10.2.1 存储过程概述存储过程概述存储过程(storedprocedure)是一组预先编译好的SQL代码。存储过程作为一个独立的数据库对象,可以作为一个单元被用户的应用程序调用,它在服务器上执行一系列重复性的与数据库相关的任务,并将结果传给客户应用程序。由于存储过程是已经编译好

10、的代码,所以执行的时候不必再次进行编译,从而提高了程序的运行效率。10.2.2 直接执行直接执行SQL命令来使用和管理存储过程命令来使用和管理存储过程1.使用和管理存储过程的应用程序【例10-2】建立一个使用和管理存储过程的应用程序。使用MSSQLServer的示例数据库PUBS。10.2 使用存储过程使用存储过程【实现步骤】(1)首先建立应用程序。(2)定制窗体图10-2程序设计界面10.2 使用存储过程使用存储过程组件名属性属性值说明ADOConnection1ConnectionString使用ConnectionString设置对话框设置该属性,建立到数据库dbdemos.mdb的连接

11、。ADOQuery1ConnectionADOConnection1指定使用的数据连接组件。DataSource1DataSetADOQuery1指定使用的数据集。DBGrid1DataSourceDataSource1为表格指定数据源。ReadOnlyTrue设置为只读Button1Caption新建存储过程、修改存储过程、删除存储过程Button2Caption执行存储过程Memo1Lines为空Label1Caption输入SQL命令Label2Caption显示存储过程执行结果表10-3各组件属性设置10.2 使用存储过程使用存储过程表10-3各组件属性设置10.2 使用存储过程使用存

12、储过程2.使用和管理存储过程的SQL命令(1)创建存储过程创建存储过程的简单语法如下:CREATEPROCEDUREprocedure_name;numberparameterdata_typeVARYING=defaultOUTPUT,.nWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONFORREPLICATIONASsql_statement.n10.2 使用存储过程使用存储过程(2)执行存储过程直接执行存储过程可以使用EXECUTE命令来执行。在Memo1的编辑框中输入:EXECoakland_authors或EXECUTEoakland_aut

13、hors点击按钮“执行存储过程”以执行存储过程oakland_authors,结果将显示在DBGrid1表格中。(3)修改存储过程存储过程可以根据用户的要求或者基表定义的改变而改变。使用ALTERPROCEDURE语句可以更改先前通过执行CREATEPROCEDURE语句创建的过程,但不会更改权限,也不影响相关的存储过程或触发器。10.2 使用存储过程使用存储过程其语法形式如下:ALTERPROCEDUREprocedure_name;numberparameterdata_typeVARYING=defaultOUTPUT,.nWITHRECOMPILE|ENCRYPTION|ECOMPIL

14、E,ENCRYPTIONFORREPLICATIONASsql_statement.n下面对存储过程oakland_authors进行修改,使其能够显示出所有居住在加里福尼亚的作者,而不考虑其它地区居住的作者。10.2 使用存储过程使用存储过程修改存储过程的代码如下:alterprocedureoakland_authorswithencryptionasselectau_fname,au_lname,address,city,zipfromauthorswherestate=caorderbyau_lname,au_fname(4)删除存储过程删除存储过程可以使用DROP命令,DROP命令可

15、以将一个或者多个存储过程或者存储过程组从当前数据库中删除,其语法形式如下:dropprocedureprocedure,n10.2 使用存储过程使用存储过程如将存储过程oakland_authors从数据库中删除,则在Memo1的编辑框中输入以下代码:dropprocedureoakland_authors(5)带参数的存储过程存储过程使用两种类型的参数,一种是输入参数,另一种是输出参数。不使用OUTPUT保留字的参数是输入参数,使用OUTPUT保留字的参数是输出参数。输入参数是单向的,而输出参数是双向的,可以向调用者返回值。本例的存储过程中使用了输入参数。createprocedureaut

16、hor_inforlastnamevarchar(40),firstnamevarchar(20)asselectau_lname,au_fname,phonefromauthorswhereau_fname=firstnameandau_lname=lastname10.2 使用存储过程使用存储过程10.2.3 用用ADO组件操作存储过程组件操作存储过程1.TADOStoredProc组件简介TADOStoredProc组件主要用于操作远程服务器上的数据库中的存储过程。ADOStoredProc是一个数据集组件,ADO数据集组件所具有的公共属性、方法和事件,在ADOStoredProc都具有

17、。(1)TADOSoredProc的关键属性Active属性Connection属性ConnectionString属性Filter属性Filtered属性Parameters属性ProcedureName属性10.2 使用存储过程使用存储过程(2)关键方法Open属性Close属性Refresh属性NextRecordset属性2.TADOStoredProc组件的使用【例10-3】建立一个使用和管理存储过程的应用程序。使用MSSQLServer的示例数据库PUBS。【实现步骤】(1)首先建立应用程序。(2)定制窗体10.2 使用存储过程使用存储过程图10-5程序设计界面10.2 使用存储过

18、程使用存储过程组件名属性属性值说明ADOConnection1ConnectionString使用ConnectionString设置对话框设置该属性,连接到数据库Pubs。ADOStoredProc1ConnectionADOConnection1指定使用的数据连接组件。ProcedureNameauthor_infor;1指定使用的存储过程名DataSource1DataSetADOStoredProc1指定使用的数据集。DBGrid1DataSourceDataSource1为表格指定数据源。ReadOnlyTrue设置为只读Button1Caption执行存储过程Gropbox1Cap

19、tion传入参数Label1CaptionLastNameLabel2CaptionFirstNameEdit1Text为空Edit2Text为空表10-4各组件属性设置10.2 使用存储过程使用存储过程(3)编写代码(4)运行程序图10-6执行结果10.3 主从结构的数据库应用程序主从结构的数据库应用程序有时我们需要将数据表格联系起来,这些表格具一种一对多的关系。比如客户表和订单表,一个客户可能会有许多订单。当我们浏览客户订货信息时,希望在客户表选择一个客户后,能够显示该客户的所有订单。利用Delphi可以方便地设计出主从表结构的应用程序。【例10-4】使用Delphi自带的Access数据

20、库dbdemos.mdb中的表customer和表Orders建立一个程序,实现主/从表。customer为主表,Orders为从表,两表之间通过字段CustNo链接。【实现步骤】(1)首先建立应用程序。(2)创建数据模块10.3 主从结构的数据库应用程序主从结构的数据库应用程序图10-7数据模块设计界面10.3 主从结构的数据库应用程序主从结构的数据库应用程序组件名属性属性值说明ADOConnection1ConnectionString使用ConnectionString设置对话框设置该属性,连接到数据库dbdemos.mdb。ADOTable1ConnectionADOConnectio

21、n1指定使用的数据连接组件。TableNameCuctomer指定打开的数据表名ActiveTrue打开数据集。DataSource1DataSetADOTable1指定使用的数据集。ADOTable2ConnectionADOConnection1指定使用的数据连接组件。TableNameOrders指定打开的数据表名MasterSourceDataSource1指定主表数据源MasterFieldsCustNo设置主从表之间的关联字段ActiveTrue打开数据集。DataSource2DataSetADOTable2表10-5数据模块各组件属性设置10.3 主从结构的数据库应用程序主从结

22、构的数据库应用程序图10-8链接字段设计器10.3 主从结构的数据库应用程序主从结构的数据库应用程序图10-9引用单元对话框10.3 主从结构的数据库应用程序主从结构的数据库应用程序(4)定制窗体程序设计界面10.3 主从结构的数据库应用程序主从结构的数据库应用程序组件名属性属性值说明DBGrid1DataSourceDataSource1ReadOnlyTrue表格为只读DBGrid2DataSourcDataSource2ReadOnlyTrue表格为只读表10-6窗体中各组件属性设10.3 主从结构的数据库应用程序主从结构的数据库应用程序图10-10主/从表关系的应用程序运行界面(5)保存所有文件,然后运行程序本章实训指导本章实训指导1.掌握事务处理的应用程序的编写。2.掌握直接用SQL命令管理和执行存储过程。3.掌握使用TADOStoredProc组件执行存储过程。4.上机完成本章所有实例。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁