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

上传人:max****ui 文档编号:6336139 上传时间:2020-02-23 格式:PPT 页数:34 大小:1.14MB
返回 下载 相关 举报
Delphi-数据库高级应用技术.ppt_第1页
第1页 / 共34页
Delphi-数据库高级应用技术.ppt_第2页
第2页 / 共34页
Delphi-数据库高级应用技术.ppt_第3页
第3页 / 共34页
点击查看更多>>
资源描述
第10章数据库高级应用技术 本章主要内容 事务的概念Delphi中的事务控制Delphi中使用存储过程主从结构的数据库应用程序 10 1事务处理 10 1 1事务的概念当用Delphi创建数据库应用时 Delphi提供了用于所有数据库访问的事务控制 一个事务 transaction 是指在一个数据库中的一张或多张表上执行的一组相关动作 在这一组动作被永久提交前 必须成功完成所有动作 如果该组动作中有一个动作操作失败 那么所有动作就会被取消 10 1 2事务的特性事务具有不可分性 一致性 隔离性和持续性 1 不可分性事务是一个工作单元 是在应用程序的BEGINTRANSACTION和ENDTRANSACTION语句之间发生一系列操作 事务只执行一次 且是不可分的 即完成全部工作或者不做任何工作 10 1事务处理 2 一致性事务是一个完整的单元 因为它保持数据的一致性 将数据从一种数据一致状态转换到另一种数据一致状态 3 隔离性事务是一个隔离单元 允许可并行执行的事务表现得像是在系统中运行的唯一事务 隔离性要求即使同时可能有其他事务正在运行 每个事务也像是操作数据存储区的唯一事务一样 事务应从不查看其他事务的中间阶段 4 持续性事务也是一个恢复单元 如果事务成功 则即使在提交后计算机立即崩溃 系统仍将保证更新该事务 专用记录允许系统的重新启动过程完成未完成的操作 以使事务可持续 10 1事务处理 10 1 3Delphi中事务控制的方式1 Delphi中事务控制的方式Delphi中事务控制的方式有两种 一种是隐式事务控制 一种是显式事务控制 在默认情况下 Delphi通过ADO为应用程序提供隐式事务控制 当应用程序处于隐式事务控制时 Delphi为数据集中的每个记录的写操作进行隐式事务控制 它提交每一个独立的写操作 如Post和AppendRecord 有两种显式控制事务方式 一种是使用Delphi组件 如TADOConnection 所提供的方法和属性进行事务控制 另一种是直接发送SQL命令到支持事务的数据库服务器进行事务控制 许多数据库都提供自己的事务处理方式 10 1事务处理 2 使用TADOConnection控制事务 1 事务处理过程通常事务处理有以下这样一个过程 BeginTrans 开始一个新事务处理try 捕捉异常 数据库更新操作 如delete insert update等 CommitTrans 操作成功 提交事务except 异常处理RollBackTrans 操作失败 回退事务end 10 1事务处理 2 开始一个事务开始一个事务使用BeginTrans方法 当开始一个事务时 后来的所有读写数据库的操作都发生在那次事务的环境中 直到事务被明确地终止或提交了新事务 使用例句 Level ADOConnection1 BeginTrans BeginTrans方法返回该事务的嵌套级别 3 提交一个事务为了做永久性修改 事务完成后必须使用CommitTrans方法提交 例如 下列语句将终止在上例中开始的事务 ADOConnection1 CommitTrans 4 回退一个事务为了取消对数据库的修改 必须用RollbackTrans方法回退一个事务 10 1事务处理 例如 下列语句将回退一个事务 ADOConnection1 RollbackTrans 5 判断是否正在处理事务判断是否正在处理事务 可以通过InTransaction属性 例 IFADOConnection1 InTransactionTHENADOConnection1 RollbackTrans 6 使用IsolationLevel属性IsolationLevel属性描述TADOConnection组件事务的独立级别 事务的独立级别决定了事务与其它作用于相同表的事务是如何相互作用的 10 1事务处理 10 1 4事务处理的实例下面以一个简单的例子说明事务的处理过程 例10 1 Delphi对TDBGrid组件使用的是默认的隐含事务控制 在表格修改一条记录后 当记录指针移动以后 数据就被写入到数据库中了 若表格很大 修改项目又很多时 如果中途想要放弃所作的修改 很难使表格恢复原样 这时就可以使用事务处理来解决这样的问题 编程实现对数据库dbdemos mdb的表employee的事务操作 实现步骤 1 首先建立应用程序 2 定制窗体 10 1事务处理 图10 1程序设计界面 10 1事务处理 表10 2各组件属性设置 10 1事务处理 3 编写代码4 程序执行分析启动程序后 点击 开始事务 按钮 在表格中修改几条记录 然后点击 提交事务 按钮 关闭程序后重新进入 会发现修改内容已写入数据库中 点击 开始事务 按钮 在表格中修改几条记录 然后点击 回退事务 按钮 关闭程序后重新进入 再次查看表格内容 会发现数据库没有被修改 10 2使用存储过程 10 2 1存储过程概述存储过程 storedprocedure 是一组预先编译好的SQL代码 存储过程作为一个独立的数据库对象 可以作为一个单元被用户的应用程序调用 它在服务器上执行一系列重复性的与数据库相关的任务 并将结果传给客户应用程序 由于存储过程是已经编译好的代码 所以执行的时候不必再次进行编译 从而提高了程序的运行效率 10 2 2直接执行SQL命令来使用和管理存储过程1 使用和管理存储过程的应用程序 例10 2 建立一个使用和管理存储过程的应用程序 使用MSSQLServer的示例数据库PUBS 10 2使用存储过程 实现步骤 1 首先建立应用程序 2 定制窗体 图10 2程序设计界面 10 2使用存储过程 表10 3各组件属性设置 10 2使用存储过程 表10 3各组件属性设置 10 2使用存储过程 2 使用和管理存储过程的SQL命令 1 创建存储过程创建存储过程的简单语法如下 CREATEPROC EDURE procedure name number parameterdata type VARYING default OUTPUT n WITH RECOMPILE ENCRYPTION RECOMPILE ENCRYPTION FORREPLICATION ASsql statement n 10 2使用存储过程 2 执行存储过程直接执行存储过程可以使用EXECUTE命令来执行 在Memo1的编辑框中输入 EXECoakland authors或EXECUTEoakland authors点击按钮 执行存储过程 以执行存储过程oakland authors 结果将显示在DBGrid1表格中 3 修改存储过程存储过程可以根据用户的要求或者基表定义的改变而改变 使用ALTERPROCEDURE语句可以更改先前通过执行CREATEPROCEDURE语句创建的过程 但不会更改权限 也不影响相关的存储过程或触发器 10 2使用存储过程 其语法形式如下 ALTERPROC EDURE procedure name number parameterdata type VARYING default OUTPUT n WITH RECOMPILE ENCRYPTION ECOMPILE ENCRYPTION FORREPLICATION ASsql statement n 下面对存储过程oakland authors进行修改 使其能够显示出所有居住在加里福尼亚的作者 而不考虑其它地区居住的作者 10 2使用存储过程 修改存储过程的代码如下 alterprocedureoakland authorswithencryptionasselectau fname au lname address city zipfromauthorswherestate ca orderbyau lname au fname 4 删除存储过程删除存储过程可以使用DROP命令 DROP命令可以将一个或者多个存储过程或者存储过程组从当前数据库中删除 其语法形式如下 dropprocedure procedure n 10 2使用存储过程 如将存储过程oakland authors从数据库中删除 则在Memo1的编辑框中输入以下代码 dropprocedureoakland authors 5 带参数的存储过程存储过程使用两种类型的参数 一种是输入参数 另一种是输出参数 不使用OUTPUT保留字的参数是输入参数 使用OUTPUT保留字的参数是输出参数 输入参数是单向的 而输出参数是双向的 可以向调用者返回值 本例的存储过程中使用了输入参数 createprocedureauthor infor lastnamevarchar 40 firstnamevarchar 20 asselectau lname au fname phonefromauthorswhereau fname firstnameandau lname lastname 10 2使用存储过程 10 2 3用ADO组件操作存储过程1 TADOStoredProc组件简介TADOStoredProc组件主要用于操作远程服务器上的数据库中的存储过程 ADOStoredProc是一个数据集组件 ADO数据集组件所具有的公共属性 方法和事件 在ADOStoredProc都具有 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使用存储过程 表10 4各组件属性设置 10 2使用存储过程 3 编写代码 4 运行程序 图10 6执行结果 10 3主从结构的数据库应用程序 有时我们需要将数据表格联系起来 这些表格具一种一对多的关系 比如客户表和订单表 一个客户可能会有许多订单 当我们浏览客户订货信息时 希望在客户表选择一个客户后 能够显示该客户的所有订单 利用Delphi可以方便地设计出主从表结构的应用程序 例10 4 使用Delphi自带的Access数据库dbdemos mdb中的表customer和表Orders建立一个程序 实现主 从表 customer为主表 Orders为从表 两表之间通过字段CustNo链接 实现步骤 1 首先建立应用程序 2 创建数据模块 10 3主从结构的数据库应用程序 图10 7数据模块设计界面 10 3主从结构的数据库应用程序 表10 5数据模块各组件属性设置 10 3主从结构的数据库应用程序 图10 8链接字段设计器 10 3主从结构的数据库应用程序 图10 9引用单元对话框 10 3主从结构的数据库应用程序 4 定制窗体 程序设计界面 10 3主从结构的数据库应用程序 表10 6窗体中各组件属性设 10 3主从结构的数据库应用程序 图10 10主 从表关系的应用程序运行界面 5 保存所有文件 然后运行程序 本章实训指导 1 掌握事务处理的应用程序的编写 2 掌握直接用SQL命令管理和执行存储过程 3 掌握使用TADOStoredProc组件执行存储过程 4 上机完成本章所有实例
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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