事务在VFP更新中的应用计算机等级考试

文章作者 100test 发表时间 2010:01:02 15:15:45
来源 100Test.Com百考试题网


  摘 要 事务处理是访问共享数据的有效方法,本文分析了VFP事务处理的功能,定义了事务处理类。
  1 事务和事务处理
  事务是独立的基本工作单位,例如对数据库字段的写操作。在多用户环境中,对多个数据库的写入操作必须进行同步处理,并且必须保证写入的数据被所有的数据库接收。事务处理有四个特性:原子性、一致性、孤立性和持续性。
  下面结合VFP对本地表和远程表对事务的命令的功能分析,讨论实现事务处理的方法。
  2 VFP事务处理的控制命令及其应用
  2.1 控制事务处理的命令
  VFP提供了以下处理事务的命令和函数:
  . BEGIN TRANSACTION
  初始化一个事务,表示一个事务的开始。
  . ROLLBACK
  取消最近BEGIN TRANSACTION语句以来对表的全部修改。
  . END TRANSACTION
  锁定记录,确认最近BEGIN TRANSACTION语句以来对表的全部修改。
  . TXTLEVEL()
  确定当前事务处理的等级,最大值为5,表示事务最多嵌套五层,TXTLEVEL()为0表示当前无事务处理。
  2.2 更新远程表时控制事务处理的命令
  a) SQLSETPROP() 格式如下:
  SQLSETPROP(连接句柄,设置类型[, 设置值])
  设置类型为Transactions且设置值DB—TRANSMANUL(在 FOXPRO.H中定义)表示可以通过SQLCOMMIT()和SQLROLLBACK()人工处理事务。如果调用成功,SQLSETPROP() 返回1;否则,如果发生连接级错误则返回-1,发生环境级错误则返回-2。
  b) SQLROLLBACK()
  取消当前事务处理期间所做的任何更改。如果事务取消成功,SQLROLLBACK()返回1.否则,返回-1。如果 SQLROLLBACK() 返回-1,可以使用AERROR()确定该事务不能取消的原因。如果设置成人工处理方式,用 SQLROLLBACK()可以事务处理期间将对远程表的所有更新全部取消。
  c) SQLCOMMIT()提交一个事务
  如果成功提交了事务,SQLCOMMIT()返回1.否则,返回-1。如果SQLCOMMIT()返回-1,可使用AERROR()函数确定该事务不能取消的原因。
  2.3 VFP使用事务处理的原则
  事务以BEGIN TRANSACTION开始,以END TRANSACTION 或ROLLBACK结束,必须成对使用;
  除非应用程序终止,事务一旦开始,直到遇到END TRANSACTION或ROLLBAKC语句期间,将保持有效;
  缓冲区中的数据比磁盘中的数据优先级高,即事务处理优先使用缓冲区中的数据;
  如果在事务处理过程中应用程序终止,则取消事务对表的所有操作;
  事务处理可以嵌套使用,最多嵌套五层。BEGIN TRANSACTION和END TRANSACTION(ROLLBACK)采用最近优先原则匹配。最内层的更新优先于嵌套事务处理中的其他更新;
  直接或间接调用事务时,VFP自动加锁,直到END TRANSACTION(ROLLBACK)时自动解锁;
  如果在事务处理期间使用了LOCK()命令, END TRANSACTION(ROLLBACK)时不自动解锁。
  3 事务处理实现本地表的数据更新
  用事务来缓冲对磁盘数据的更新操作,对磁盘数据更新在事务结束之后进行,如果系统不能执行对数据库的更新操作,则取消整个事务,不执行任何更新操作。
  首先建立事务处理自定义类—TRANSACTION,包括本地表事务处理确认(—TRANSCONFIRM)和本地表事务处理取消(—TRANSCANCEL)两种方法。这两种方法的前提条件是访问共享数据的各个用户程序都使用行缓冲。用CURSORSETPROP(“Buffering”,3)将表设置成开放式行缓冲方式。
  —TRANSCONFIRM 方法
  BEGIN TRANSACTION

相关文章


如何检查磁盘是否存在计算机等级考试
读取INI文件内容计算机等级考试
如何取得某个文件的大小、修改日期及属性计算机等级考试
如何删除只读属性的文件计算机等级考试
事务在VFP更新中的应用计算机等级考试
数据共享程序设计计算机等级考试
在视图中复制表结构计算机等级考试
VFP6.0中安装字库的范例计算机等级考试
关联扩展名到自定义的VFP程序计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛