如何提高VFP中数据表的安全性

来源 :中小企业管理与科技·学术版 | 被引量 : 0次 | 上传用户:yo55an
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文分析了VFP中游标、数据缓冲、事务处理、数据备份和恢复的功能以及它们在提高数据表安全性中的应用。
  关键词:Visual FoxPro 游标 视图 CursorAdapter 数据缓冲 事务处理
  
  VFP即Visual FoxPro,它是由Foxpro发展而来的一种面向对象的数据库程序设计语言,使用VFP不仅能方便地创建和管理数据库,而且能够直接用来编制基于该数据库的信息系统。目前在我国,有相当一部分正在运行的应用程序是用VFP编写的,可以说,从操纵数据的角度来说,VFP的效率是最高的,使用它可以轻而易举的开发出一个实用的信息系统。但VFP也存在一些缺点,比如一些用VFP编写的应用系统在使用时,会因为机器的突然断电死机、用户的非正常退出等原因导致数据表的损坏及表中数据丢失,虽不是经常性的问题,一旦出现可能非要专业人员才能解决,为了防止这种现象发生,除了给应用系统提供一个稳定的平台,配备UPS,更换稳定的机器及网络设备外,还应从软件设计的本身采取一些提高数据表安全性的措施。
  断电死机造成数据的损坏丢失是很常见的,只要是写磁盘文件时断电就会发生文件错误,Word程序也会遇到这种问题,但Word在断电时文件未被损坏,是因为它使用了临时文件,在Word打开某文件时,可以看到相应目录下产生的.Tmp文件即是。大多数的坏表是因为直接打开表后长时间的写入或修改,这样遇到断电几率就很大,VFP数据表的格式决定了它不具备自动备份和修复的功能,而设计员在程序中有没有考虑过这种断电情况的发生?采取了哪些避免方法?本文主要介绍了VFP中游标、数据缓冲、事务处理和数据备份恢复的功能以及它们在提高数据表安全性中的应用。
  
  (一)游标(Cursor)
  
  在VFP中,数据处理是围绕着游标(Cursor)进行的,Cursor虽然也是“表”,但它是属于“内存型”的,断电或意外退出,这个“表”就失效,便不存在安全性的问题。VFP数据库中的视图、表单数据环境中的表和SQL Select产生的查询结果都是Cursor。可以说,VFP灵活、强大的数据处理功能无一不归功于Cursor的参与,下面介绍一下游标的两种形式及应用:视图和CursorAdapter。
  1、视图
  视图是从一个表或多个表或其他视图上导出的“表”,它可以被看成是虚拟表或存储查询,兼具表和查询的特点:与查询相类似的是,视图可以用来从一个或多个相关联的表或视图中提取需要的信息,通过视图访问的数据不作为独特的对象存储在数据库内,数据库内存储的是SELECT语句,SELECT语句的结果集构成视图所返回的虚拟表;与表相类似的是,视图可以用来更新其中的信息,并将更新结果永久保存在磁盘上。在应用程序设计中,可以用视图使数据暂时从数据库中分离成为游离数据,以便在主系统之外收集和修改数据。
  当我们用了视图之后,更改视图的同时表没有立即更改,而是在发送TableUpdate()函数后更改,从而提高了操作的安全性。创建和使用视图的方法很简单,由数据表创建一个视图,在更新条件选择“发送SQL更新”,便可以把它添加到数据环境中和表一样使用。
  2、CursorAdapter
  CursorAdapter基类是VFP8.0推出的一个最重要的、也是最精彩的新功能。它提供了一个统一、易用的数据接口,可以使用 CursorAdapter来访问本地数据和ODBC、ADO和XML这样的远程数据。VFP8.0重新设计了表单的数据环境,用可视化的方式来创建CursorAdapter后,只需要很少的工作就可以设置好那些对于取得和更新数据来说相当重要的属性。比如,DataSourceType属性表示要选用什么方式访问数据源,如果使用VFP表,就选择“Native”;Tables属性设置为所使用VFP表的表名;SelectCmd\属性是一个用来取得数据的 SQL Select 命令,可以设置为:select字段,字段from表名。设置完毕,就会在数据环境设计器中产生一个Cursor,然后像处理本地表一样处理这个Cursor,可以将其拖放到表单上实现与表单控件的绑定,用TableUpdate()函数来更新数据源。
  CursorAdapter与视图有很多类似的地方:生成一个SQL select语句,定义哪些字段将被更新,设置关键字段,游标中取到数据后使用TableUpdate()函数发送更新到源表,但视图是数据库的概念,不具备编程语言的特点,它把整个过程作为一个整体看待,SQL Select语句是预先定义好的,无法动态去修改它。而对象化的 Cursor(处理)管理器CursorAdapter与数据库无关,它完全是程序设计上的概念,具备了面向对象程序设计的一切好处,很容易定义、改变和维护,可以很轻松的通过改动SelectCmd属性来改变取得什么数据。
  
  (二)数据缓冲
  
  数据缓冲是用来保护对表记录所作的数据更新及数据维护操作的一种技术。当一个表或视图设置成了缓冲属性后,VFP为启用数据缓冲的表在内存中开辟一个缓冲区,对表的一个或多个记录的修改先保存在缓冲区中,VFP并不直接对硬盘上的数据库进行操作,而是对缓冲区中的数据进行操作,确定记录要正式存入到表或视图中时,才直接通过对应文件连接到表或视图中一次性进行维护操作,这样可以撤消修改,用户可以决定是否将缓冲区中的数据更新表文件。数据缓冲是由CursorSetprop()函数来设定缓冲方式,由TableRevert()来取消对数据的修改,由TableUpdate()来提交对数据的修改。用缓冲的话,只有在用TableUpdate()提交对数据的修改时遇上断电才有可能坏表,大大减少了直接操作数据表的时间,从而达到断电死机等情况下保护数据表的目的。
  VFP提供两种缓冲:记录缓冲和表缓冲。若一次只对一个记录进行访问、修改或写操作,选择记录缓冲。在一个多用户环境中,记录缓冲能够提供适当的有效性检查机制,对其他用户所做的数据更新操作影响最小。若要对多个记录的更新使用缓冲,选择表缓冲。
  VFP以两种锁定方式提供缓冲:保守式和开放式。这两种方式决定了一个或多个记录何时被锁定,又是何时、怎样被解锁的。保守式缓冲:锁定当前记录,在发出TableUpdate()命令之后更新。在多用户环境中,保守式缓冲能防止其他用户在对某一特定记录或表正进行修改时访问它。保守式缓冲为单个记录的修改提供最安全的工作环境,但是会降低用户的操作速度。开放式缓冲:一直等到发布TableUpdate()命令,然后锁定并更新已编辑的记录。开放式缓冲是更新记录的有效方法,因为锁定只在写记录时生效,这样在多用户环境中使单个用户独占系统的时间最少。
  缓冲访问数据的方法:
  在表单的数据环境中,将数据表的属性BufferModeOverride设为3开放式行缓冲或5开放式表缓冲;
  在"保存"代码中加入:
  =tableupdate(.t.) &&实施对原表的更改在"还原"代码中加入:
  =tablerevert(.t.) &&放弃所有表的更改
  
  (三)事务处理
  
  即便使用缓冲,有时也会出错,使用事务处理能保护更新操作。事务处理就是对修改的数据进行跟踪,它可以恢复修改过的数据,在机器突然死机断电、程序出错等引起程序中断的情况下会把数据恢复到修改前的状况。在应用程序中添加事务处理所提供的保护机制超过了记录缓冲和表缓冲提供的保护功能,它将整段代码作为一个受保护的、可恢复的单元。如果由于某种原因,系统不能执行对数据库的更新操作,就可以回滚整个事务处理,而不执行任何更新。
  VFP提供了三个命令来控制事务处理:BEGIN TRANSACTION命令用来初始化一个事务处理,ROLLBACK命令用来取消最近一条BEGIN TRANSACTION 语句以来所做的全部修改,END TRANSACTION命令用来锁定记录,提交最近一条BEGIN TRANSACTION 语句以来对数据库中表所做的全部修改,然后解锁记录。一个事务处理起始于 BEGIN TRANSACTION命令,以 END TRANSACTION或ROLLBACK命令终止。为了保存所做的修改并终止事务处理,应发出 END TRANSACTION命令。如果事务处理失败(如服务器有故障或工作站有故障,以及没有提交事务处理就退出VFP),或者用户发出ROLLBACK命令,事务处理中的文件就恢复成原状态。
  示例:
  use 表名
  begain tran &&开始事务处理
  dele &&删除一条记录
  rollback &&把删除的记录恢复回来
  dele &&删除一条记录
  end tran &&结束事务处理,清除事务处理跟踪日志
  VFP使用事务处理的原则:事务以BEGIN TRANSACTION开始,以END TRANSACTION或ROLLBACK结束,必须成对使用;除非应用程序终止,事务一旦开始,直到遇到END TRANSACTION或ROLLBAKC语句期间,将保持有效;缓冲区中的数据比磁盘中的数据优先级高,即事务处理优先使用缓冲区中的数据;如果在事务处理过程中应用程序终止,则取消事务对表的所有操作;事务处理可以嵌套使用, 函数TXTLEVEL()确定当前事务处理的等级,最大值为5,表示事务最多嵌套五层,TXTLEVEL()为0表示当前无事务处理;BEGIN TRANSACTION和END TRANSACTION(ROLLBACK)采用最近优先原则匹配;最内层的更新优先于嵌套事务处理中的其他更新;直接或间接调用事务时,VFP自动加锁,直到END TRANSACTION(ROLLBACK)时自动解锁。
  (四)备份与恢复
  虽然游标、缓冲和事务处理的结合使用能大大降低由意外情况引起的数据表的不安全性和不稳定性,但计算机故障的原因很多,包括磁盘故障、灾害故障、人为破坏以及计算机病毒这些通过编程无法解决的问题,所以程序中一定要有备份及恢复的功能,当数据库中的表损坏时,可以用备份表恢复数据。
  备份数据时我们常用的方法是:Copy to<路径>命令生成备份表文件,如果原数据表有备注字段还会同时生成一个同名的备注文件。
  示例:
  bf=ALLTRIM(PUTFILE("表文件:","","dbf"))
  SELECT 表名
  if !empty(bf)
  COPY TO "&bf"
  nn=MESSAGEBOX("数据导出完毕...",0+64,"信息")
  endif
  恢复数据时所用的方法是:读取备份文件,将原表的记录全部删除,用Append命令将备份文件的数据加入到数据表中。
  示例:
  hf=ALLTRIM(GETfile("dbf", this.Caption, "选择"))
  if !empty(hf)
  SELECT 表名
  DELETE ALL
  APPEND FROM "&hf"
  nn=MESSAGEBOX("数据导入完毕...",0+64,"信息")
  ENDIF
  利用以上程序,可以实现对VFP数据表的备份与恢复。
  总结:综上所述,VFP提供的游标、数据缓冲、事务处理可以有效的保护数据,它们在程序设计中的结合使用能大大降低程序意外中断引起的数据表损坏,同时程序设计中要有完善的数据备份和恢复功能,在程序遭遇磁盘故障及计算机病毒等情况时能及时恢复损坏和丢失的数据。
  
  参考文献:
  [1]鲁俊生,胡天云.《VFP程序设计简明教程》.西安电子科技大学出版社,2001。
  [2]李军.《Visual FoxPro数据库系统开发应用教程》.清华大学出版社,2007。
  [3]常明华.《VFP编程技术及数据库应用教程》.中国电力出版社,2002。
其他文献
摘要:社会资本积累对促进大学生求职择业具有非常重要的作用。文章着重探讨社会资本在大学生求职择业中的作用,以及大学生如何积累自己的社会资本问题。  关键词:社会资本 大学生求职择业 社会资本积累    1998年中国开始推行的高校扩招,使在校大学生人数4年内扩张了一倍以上,这被外国媒体描述为“中国高等教育的一次大跃进”。扩招造成的直接后果就是从2002年开始高校毕业生人数急剧增加,大学毕业生总量出现
期刊
摘要:双阳煤矿近年来,随着矿井不断老化,大块综采面渐减少,工作面搬家频繁,为确保综采工作面按时接续,快速安装管理人员及技术工人经过不断的实践和研究,总结出一套综采工作面安全、快速、高质量安装的管理方法。  关健词:综采面 快速 安装    前言    综采面能够保质、保量、保安全,快速安装,是实现综采正常接续超前试运转,正常生产的重要保证。安装管理技术发展到今天,我矿以走在集团公司的前列,快速安装
期刊
摘要:为使绞车电控系统达到安全可靠、高效节能的目的,本文试通过对绞车交流电控系统存在的问题分析,阐述了变频调速是绞车电力拖动系统的发展方向。从采用交流变频电控系统的基本原理、功能以及所具有的各种保护、达到的指标,介绍交流变频电控系统在绞车的安全运行性能、节能等方面作用。  关键词:绞车拖动 GBP系列高压变频器 实践应用    20世纪以前,我国矿井提升机控制系统多数采用模拟直流电控调速和绕线式异
期刊
关键词:速写 传统与现代绘画表现手段  摘要:速写,他需要在很短的时间内迅速描绘出所见到的对象,具有收集素材和训练造型能力的两大功能,同时  训练绘画者敏锐的快速地捕捉对象的这种能力和养成对生活观察、分析与综合的能力。对培养、提高审美感受是一个极好的办法。速写这一技能在艺术活动中的重要作用与创作中现代科技手段的使用是并不矛盾的,让我们别忘记速写,只有在生活中发现、积累,才能创作出源于生活并高于生活
期刊
国家机关和行政事业单位中,办公费的开支是其经费开支中数额较大,漏洞较多,管理较难的一项开支,对它的管理,如果制度不健全、不完善,方法不正确、不得当,使其正确的使用和开支,是促进和提高我们财务管理水平的一个重方面。  1、办公费紧张是令许多国家机关和行政事业单位头疼的问题,而办公费的流失又加剧了这种紧张状况。常见的办公费流失的情况有:  1.1是办公用品私用,小到铅笔、稿纸,大到彩电、照相机,都可以
期刊
新经刘时代的到来,必然会对传统的财务会计产生挑战,会计理论、会计实务及会计人员将面临什么新问题,应有何新理念,本文作一简要分析。  进入二十一世纪以来,世界经济开始呈现出不同以往的发展趋势,被称作为“新经济”的时代已经来临。  所谓新经济,就是以经济全球化和信息革命为背景、以互联网的应用和电子商务为特征、以知识和人才为依托、以进一步提高整个经济的运行效率为目标、以不断创新为保证的经济形态。这种区别
期刊
摘要:发展农民专业合作组织是建设社会主义新农村的重要途径。农民专业合作组织在建设社会主义新农村中发挥着重要作用。但同时也还存在着不少困难和问题。这些问题,是农民专业合作组织有了一定发展、但又发展不充分的结果,只有通过改革和发展的办法逐步解决。本文从湖南省怀化市农民专业合作组织的现状出发,主要运用融资供求模型分析了其资金问题,并提出了一些政策建议。  关键词:农民专业合作组织 融资供求 信用    
期刊
摘要:SBS改性沥青以其突出的的路用性能已逐渐被公路建设行业所认可,并不断推广使用,本文从SBS改性沥青相溶性机理和原料选择、生产、存储等工艺方面做了相关介绍。  关键词:改性沥青 基质沥青 稳定剂 生产工艺    1改性沥青相溶性机理 改性沥青是由高分子聚合物改性剂作为分散相,用物理的方法以一定的粒径均匀地分散到粒径连续相重新构成的体系。聚合物之间存在部分的吸附,极易发生两相之间的离析。相溶性好
期刊
一、引言    由于体积小、可靠性高以及组态灵活等优点,PLC在工业控制领域得到了广泛的应用。在PLC组成的控制系统  中,一般由上下微机组成主从式控制系统,PLC作为下位机,完成数据采集、状态判别、输出控制等,上位机(微型计算机、工业控制机)完成采集数据信息的存储、分析处理、状态显示以及打印输出,以实现对系统的实时监控。这种监控系统充分利用了微型机和PLC各自的特点,实现了优势互补,得到了广泛的
期刊
摘要:三维CAD系统的核心是产品的三维模型。三维模型是在计算要中将产品的实际形状表示成为三维的立体模型。从支持创新设计的角度讲,三维CAD技术便于直观表达设计意图。特别是在概念设计、工业设计主面,三维CAD系统采用的三维特征和参数化功能可以更加准确表达设计意图,完成装配等复杂设计过程,使设计过程更加符合设计者的设计习惯和思维方式,进行创新设计。研究了组件技术和特征造型技术,并对基于组件开发三维CA
期刊