急用:ASP如何锁定数据库
我习惯使用下面的方法操作数据库StrCnn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.mappath("...
我习惯使用下面的方法操作数据库
StrCnn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("mdb.mdb")
Set Cnn=Server.CreateObject("ADODB.Connection")
Cnn.open StrCnn
......
Set rsTest=Server.CreateObject("adodb.recordset")
sql="select * from 表名 WHERE 姓名='" & myname & "'"
rsTest.Open sql, Cnn, 1, 1
......
StrSQL="UPDATE 表名 SET 积分=积分+1" '修改记录
StrSQL="DELETE from 表名 WHERE 日期='" & data1 & "'" 删除记录
用习惯了这种形式的代码,其它形式的语句我很难看明白。现在的问题是,我作为管理员要修改数据或删除数据,但操作前想将对应的数据表锁定不允许其它用户连接后修改(即锁定为只读),当我操作完成后再解锁,请问如何实现。
我只想以管理员身份登录维护数据时能让当前操作的记录锁定不让其它人访问,怎么作我还没有明白。。。 展开
StrCnn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("mdb.mdb")
Set Cnn=Server.CreateObject("ADODB.Connection")
Cnn.open StrCnn
......
Set rsTest=Server.CreateObject("adodb.recordset")
sql="select * from 表名 WHERE 姓名='" & myname & "'"
rsTest.Open sql, Cnn, 1, 1
......
StrSQL="UPDATE 表名 SET 积分=积分+1" '修改记录
StrSQL="DELETE from 表名 WHERE 日期='" & data1 & "'" 删除记录
用习惯了这种形式的代码,其它形式的语句我很难看明白。现在的问题是,我作为管理员要修改数据或删除数据,但操作前想将对应的数据表锁定不允许其它用户连接后修改(即锁定为只读),当我操作完成后再解锁,请问如何实现。
我只想以管理员身份登录维护数据时能让当前操作的记录锁定不让其它人访问,怎么作我还没有明白。。。 展开
展开全部
RS.OPEN SQL,CONN,A,B 就是你用的rsTest.Open sql, Cnn, 1, 1
A:
ADOPENFORWARDONLY(=0)
只读,且当前数据记录只能向下移动
ADOPENKEYSET(=1)
只读,当前数据记录可自由移动
ADOPENDYNAMIC(=2)
可读写,当前数据记录可自由移动
ADOPENSTATIC(=3)
可读写,当前数据记录可自由移动,可看到新增记录
B:
ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录
ADLOCKPESSIMISTIC(=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。
ADLOCKOPTIMISTIC(=3)
乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。
ADLOCKBATCHOPTIMISTIC(=4)
批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。
对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,数据在这段时间被更新。这减少了资源的使用。
回楼主:
如果想只要编辑一开始,则立即锁住记录。的话 后面哪个 1 改成 2 就OK了啊。其实你给的代码写的是 1 那是只读的,如果想写数据库,至少需要写 2 或更大。
执行UPDATE 时数据库就是锁定的,你想不锁定都不行的。
再不明白的话 Hi 我好了。
这个的话,SQL做不到的,你得在你的程序里写个关闭,让其他人不能打开相关页面,只给他个提示才可以.
A:
ADOPENFORWARDONLY(=0)
只读,且当前数据记录只能向下移动
ADOPENKEYSET(=1)
只读,当前数据记录可自由移动
ADOPENDYNAMIC(=2)
可读写,当前数据记录可自由移动
ADOPENSTATIC(=3)
可读写,当前数据记录可自由移动,可看到新增记录
B:
ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录
ADLOCKPESSIMISTIC(=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。
ADLOCKOPTIMISTIC(=3)
乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。
ADLOCKBATCHOPTIMISTIC(=4)
批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。
对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,数据在这段时间被更新。这减少了资源的使用。
回楼主:
如果想只要编辑一开始,则立即锁住记录。的话 后面哪个 1 改成 2 就OK了啊。其实你给的代码写的是 1 那是只读的,如果想写数据库,至少需要写 2 或更大。
执行UPDATE 时数据库就是锁定的,你想不锁定都不行的。
再不明白的话 Hi 我好了。
这个的话,SQL做不到的,你得在你的程序里写个关闭,让其他人不能打开相关页面,只给他个提示才可以.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询