热线电话:0598-8259405
你现在的位置是:首页 > 新闻资讯 > 设计师观点> 设计师观点
ASP打开数据库记录集时的游标和锁定rs.open sql,conn,1,1
发布日期:2012/9/15  关注度:1921次   From:三明天意网络

  在ASP网站程序中,我们经常用到打开数据库的语句,但大多数人都不了解ASP打开数据库记录集时的游标类型和锁定类型。rs.open sql,conn,1,1后面的两个参数到底是什么意思呢?这个值的范围是哪些呢?下面石家庄网站建设(www.viming.com)给大家讲解一下。

  RS.OPEN SQL,CONN,CursorType,LockType

  一、游标类型(CursorType)

  ADOPENFORWARDONLY(=0)
  只读,且当前数据记录只能向下移动

  ADOPENKEYSET(=1)
  只读,当前数据记录可自由移动

  ADOPENDYNAMIC(=2)
  可读写,当前数据记录可自由移动

  ADOPENSTATIC(=3)
  可读写,当前数据记录可自由移动,可看到新增记录

  Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:

以下是引用片段:
-------------------------------------------------------------
常数                 常数值    说明
-------------------------------------------------------------
adOpenForwardOnly     0        缺省值,启动一个只能向前移动的游标(Forward Only)。
adOpenKeyset          1        启动一个Keyset类型的游标。
adOpenDynamic         2        启动一个Dynamic类型的游标。
adOpenStatic          3        启动一个Static类型的游标。

  以上几个游标类型将直接影响到Recordset对象所有的属性和方法,以下列表说明他们之间的区别。

以下是引用片段:
-------------------------------------------------------------------------------------
Recordset属性    adOpenForwardOnly    adOpenKeyset    adOpenDynamic    adOpenStatic
-------------------------------------------------------------------------------------
AbsolutePage          不支持            不支持          可读写            可读写
AbsolutePosition      不支持            不支持          可读写            可读写
ActiveConnection      可读写            可读写          可读写            可读写
BOF                   只读              只读            只读              只读
Bookmark              不支持            不支持          可读写            可读写
CacheSize             可读写            可读写          可读写            可读写
CursorLocation        可读写            可读写          可读写            可读写
CursorType            可读写            可读写          可读写            可读写
EditMode              只读              只读            只读              只读
EOF                   只读              只读            只读              只读
Filter                可读写            可读写          可读写            可读写
LockType              可读写            可读写          可读写            可读写
MarshalOptions        可读写            可读写          可读写            可读写
MaxRecords            可读写            可读写          可读写            可读写
PageCount             不支持            不支持          只读              只读
PageSize              可读写            可读写          可读写            可读写
RecordCount           不支持            不支持          只读              只读
Source                可读写            可读写          可读写            可读写
State                 只读              只读            只读              只读
Status                只读              只读            只读              只读
AddNew                支持              支持            支持              支持
CancelBatch           支持              支持            支持              支持
CancelUpdate          支持              支持            支持              支持
Clone                 不支持            不支持
Close                 支持              支持            支持              支持
Delete                支持              支持            支持              支持
GetRows               支持              支持            支持              支持
Move                  不支持            支持            支持              支持
MoveFirst             支持              支持            支持              支持
MoveLast              不支持            支持            支持              支持
MoveNext              支持              支持            支持              支持
MovePrevious          不支持            支持            支持              支持
NextRecordset         支持              支持            支持              支持
Open                  支持              支持            支持              支持
Requery               支持              支持            支持              支持
Resync                不支持            不支持          支持              支持
Supports              支持              支持            支持              支持
Update                支持              支持            支持              支持
UpdateBatch           支持              支持            支持              支持

  注意:其中NextRecordset方法并不适用于Microsoft Access数据库。

  二、锁定类型(LockType)

  ADLOCKREADONLY(=1)
  缺省锁定类型,记录集是只读的,不能修改记录

  ADLOCKPESSIMISTIC(=2)
  悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。

  ADLOCKOPTIMISTIC(=3)
  乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。

  ADLOCKBATCHOPTIMISTIC(=4)
  批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。

  当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,数据在这段时间被更新。这减少了资源的使用。

  Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:

以下是引用片段:
--------------------------------------------------------------
常数                  常数值     说明
--------------------------------------------------------------
adLockReadOnly          1        缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update
                                 及Delete等方法
adLockPrssimistic       2        当数据源正在更新时,系统会暂时锁住其他用户的动作,以持数据
                                 一致性。
adLockOptimistic        3        当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户
                                 可以对数据进行增、删、改的操作。
adLockBatchOptimistic   4        当数据源正在更新时,其他用户必须将CursorLocation属性为
                                 adUdeClientBatch才能对数据进行增、删、改的操作。

  下面再简单举例说明一下:

  (1) rs.Open sql,conn,1,1
  本文中大量使用的方式。无法看到其他用户添加的新数据,但被其他用户删除的数据将变为不可访问,同时可以看到其他用户所作的修改。只查询数据用这一条。

  (2) rs.Open sql,conn,1,3
  静态打开方式。在你使用数据是其他用户无法访问该数据。新增、修改、删除,用这个一条。

  (3) rs.Open sql,conn,1,2
  动态的数据库打开方式,其他用户所进行的修改、删除和新建等工作都会立即在数据对象中体现出来,并且支持全部类型的数据移动方式,除非提供者不支持,否则也可以进行书签操作。这一条本人不太推荐使用。

  (4) rs.Open sql,conn,-1
  不指定打开方式。不推荐。

三明网站建设:http://www.smzwz.com



首  页  |  新闻资讯  |  建站套餐  |  联系我们  |  网站地图  |  网站备案

天意网络技术有限公司   地址:三明市梅列区乾龙新村229幢307室(闽中汽车城内)   
(业务):18020822831  技术部:0598-8259405  闽ICP备14006732号-3
我们的主要服务:三明网站建设 三明网页设计 三明网站制作 三明网站维护 三明网站改版