WEB开发网
开发学院数据库MSSQL Server XML、T-SQL 和 CLR 携手开创数据库编程新天地 阅读

XML、T-SQL 和 CLR 携手开创数据库编程新天地

 2007-11-11 04:50:01 来源:WEB开发网   
核心提示: 页面锁定从理想的角度来说,如果能对记录进行锁定,XML、T-SQL 和 CLR 携手开创数据库编程新天地(2),则会给多用户程序带来极大的灵活性,然而遗憾的是,在执行Update方法前不锁定正在编辑的记录所在的页面,(4)dbOptimisticValue: 基于行值使用开放式并发(仅ODBCDirect工作区),M

页面锁定

  从理想的角度来说,如果能对记录进行锁定,则会给多用户程序带来极大的灵活性。然而遗憾的是,Microsoft Jet引擎不支持真正的记录锁定,而是使用页面锁定。页面锁定只锁定包含当前正在编辑的记录的页,Microsoft Jet进行访问和锁定的页的大小为2K(2048个字节)。在使用页面锁定时,其他用户可以读取锁定页中的数据,但不能对数据进行修改。在这种锁定方案中,每次将锁定多个记录,锁定的记录的个数取决于每个记录的大小。例如,如果每个记录的长度为230个字节,则每次只能锁定9个记录;而如果记录的长度为30个字节,则每次可锁定68个记录。

  锁定模式。页面锁定分为两种模式,即保守式锁定和开放式锁定,它确定了Microsoft Jet如何对数据进行锁定。当编写在页面级别上锁定数据的应用程序时,必须确定要使用哪种锁定模式。页面锁定可以通过两种方法来设置,即LockEdits属性和OpenRecordset方法中的lockedit5参数。

  1.用LockEdits 属性指定锁定模式。锁定模式可以通过LockEdits属性来指定。该属性可用于各种Recordset对象,包括动态集、快照、表及动态类型的Recordset对象。LockEdits属性是一个布尔值,当把该值设置为True(缺省)时,将对记录集进行保守式锁定,即在执行Edit方法时锁定2K的页面:如果把该属性设置为False,则对记录集进行开放式锁定,即在执行UPdate之前不锁定要更新的记录所在的2K页面。如下面的例子:

  Dim rstTemP As ReCordset

   ……

  rstTemp.LockEdits=True

说明:a.锁定页面后,其它用户不能对正在编辑的记录所在页面进行修改,但可以读取锁定页中的数据。在其它用户锁定页面后,如果再把LockEdits属性设置为True,则会出错。b.如果把LockEdits属性设置为False,且其它用户已锁定页面,则其后的用户在使用Update时将会出错。c.当与Microsoft连接的ODBC数据源一起操作时,LockEdits属性被设置为False,即开放式锁定。

  2.用OpenRecordset方法指定锁定模式。我们已多次使用过OpenRecordset方法,该方法的格式如下:

   Set recordset=object.OpenRecordset(type,options,lockedits)

其中第三个参数,即lockedits,用来指定锁定模式或以只读方式打开记录集。该参数可以取以下5种值:

  (1)dbReadOnly:以只读方式打开记录集。注意,在options参数中也可以使用dbReadOnly,但不能同时使用,否则会产生错误。

  (2)dbPessimistic:用保守式锁定模式打开记录集,一旦使用Edit方法,将立即锁定正在编辑的记录所在的页面,直到执行Update方法后才释放对该页面的锁定。

  (3)dbOptimistic:用保守式锁定模式打开记录集,在执行Update方法前不锁定正在编辑的记录所在的页面。

  (4)dbOptimisticValue: 基于行值使用开放式并发(仅ODBCDirect工作区)。

  (5)dbOptimisticBatch:允许开放式更新(仅ODBCDirect工作区)。

上一页  1 2 3 4  下一页

Tags:XML SQL CLR

编辑录入:coldstar [复制链接] [打 印]
赞助商链接