多用户应用程序中应注意问题_VB.net_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

多用户应用程序中应注意问题

作者:黑客防线网安VB教程基地 来源:黑客防线网安VB教程基地 浏览次数:0

黑客防线网安网讯:问题二再查询与事务      1.再查询数据      在多用户应用程序中,如果以可视的形式把数据显示在窗口中,则需要用最新的数据来更新用户的视图。而要获得由其他用户修改了的最新...
问题二再查询与事务
  
  
  1.再查询数据
  
  
  在多用户应用程序中如果以可视的形式把数据显示在窗口中则需要用最新的数据来更新用户的视图而要获得由其他用户修改了的最新视图,应用程序必须显式地对数据执行再查询操作为了获得记录集中数据的最新视图,首先应确定记录集是否支持Requery方法。如果ReCordset对象的Restartable属性值为Tme,则可以使用Requery方法来刷新Recordset对象的内容。如果记录集不支持Requery方法,则必须用OpenRecordset方法再次打开记录集。一般说来,重新打开记录集比使用Requery方法要慢一些。下面这个过程,用来测试一个记录集是否可执行再查询。
  
  
  过程如下:
  
  
  FunctionRequeryRecordset(dbsAsDatabase,rstAsRecordset)AsInteger
  
  OnErrorResumeNext
  
  注释:能够再查询记录集吗?
  
  Ifrst.Restartable=FalseThen
  
  requeryRecordset=-1
  
  EXitFunction
  
  Endlf
  
  rst.Requery注释:再查询记录集
  
  SelectCaseErr注释:处理所有错误
  
  Case0
  
  RequeryReCordset=0
  
  EXitFunction
  
  CaseElse
  
  Err=0
  
  注释:重新打开记录集
  
  注释:使用rstNane来获取SQL
  
  注释:字符串、表或QueryDef的值
  
  注释:记录集最初是基于它们的
  
  Setrst=dbs.OpenRecordset(rst.Name,rst.Type)
  
  SelectCaseErr
  
  Case0
  
  RequeryRecordset=0
  
  EXitFunction
  
  CaseElse
  
  注释:不返回错误给调用程序
  
  Err=0
  
  RequeryRecordset=-l
  
  EXitFUnctlon
  
  EndSelect
  
  EndSelect
  
  EndFunction
  
  
  用上面的过程可以再查询一个指定的记录集。如果再查询成功,则过程返回0;如果程序不能对记录集进行再查询,则重新打开记录集。如果不能重新打开记录集,则过程返回-1。该过程有两个参数,其中参数dbs是一个数据库对象;而rst是一个Recordset对象。为了调用上面的过程,可以在窗体上画一个命令按钮,然后编写如下的事件过程:
  
  
  PrivateSubCommand1_CliCk()
  
  DimMvdbsAsDatabase
  
  DimMvTabAsRecordset
  
  SetMydbs=OPenDatabase("c:dbdirdb1.mdb",dbOpenDynaset)
  
  SetMyTab=Mydbs.OpenRecordset("Tabel1",dbOpenTable)
  
  a=RequeryReCordset(Mydbs,MyTab)
  
  Ifa=0Then
  
  MsgBox"再查询成功"
  
  ElSe
  
  MsgBox"不能执行再查询"
  
  Endif
  
  EndSub
  
  
  程序运行后,单击命令按钮,将调用上面的过程,然后根据具体情况显示相应的信息框。在一般情况下,大多数Recordset对象是可重启动的(或者是可以被再查询的),但基于传递查询和没有固定列宽的交叉表查询的Recordset对象例外,不能再查询这些类型的Recordset对象,为了获得数据的最新状态,必须重新打开这些对象。
  
  
  2.在多用户环境中使用事务
  
  
  可以用MicrosoftJet事务把更新划分为多个单元,使它能够被当作整体提交或回退。由于事务缓冲区的更新是临时文件,而不是实际的表,所以它们在多用户环境中也是有用的。在多用户环境中,事务的一般用途是:确保用户在变更共享数据时,所看到的共享数据的视图是完整的。例如,假定应用程序正在执行更新数据的代码,而另一个用户又正在生成相同数据的报表。如果更新没有被包装进事务中,则生成报表的用户接收到的数据可能是不一致的。而如果把更新包装进事务中,则可以确保共享数据的其它用户视图在代码结束运行之前不会受到代码的影响。注意,不要使事务保持打开的时间太长。由于编辑事务而产生的所有锁定,在事务被提交或回退之前,将保持锁定状态,这可能会对应用程序的多用户并发产生有害的影响。->

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14578-1.html
网站维护教程更新时间:2012-04-03 01:09:34  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer