当打开一个RecordSet后,如果对它进行修改操作,会影响到原始数据库。例如使用RecordSet中的delete函数“删除纪录”,那么这个操作会立刻作用于数据库,也就是会删除数据库中的对应纪录。
有些情况下,我们希望修改操作只作用于内存中的RecordSet对象,而不会影响到原始数据库。例如当使用RecordSet中的delete函数“删除纪录”时,我们希望这个操作只删除RecordSet对象中的纪录,而不会删除原始数据库中的对应纪录。
为了达到这个目的,我们可以在打开RecordSet时,把它的LockType属性设置为4。
代码如下:
Set RecordSet__storeing_article=Server.CreateObject("ADODB.Recordset")
set RecordSet__storeing_article.ActiveConnection = connect_object
RecordSet__storeing_article.CursorType = 2
RecordSet__storeing_article.LockType = 4
RecordSet__storeing_article.Open "select * from table_A"
do While RecordSet__storeing_article.EOF = False
if RecordSet__storeing_article.fields("a").value > 100 then
RecordSet__storeing_article.delete 1 '只删除RecordSet对象中的当前纪录,而不会删除数据库中的对应纪录
end if
RecordSet__storeing_article.movenext
loop
解释:如果没有RecordSet__storeing_article.LockType = 4
这句话,那么执行RecordSet__storeing_article.delete 1
时,就会删除数据库中的对应纪录
我们也可以从另外一个角度来理解LockType = 4
对于delete
函数的作用:RecordSet对象只是程序运行时位于内存中的一个对象变量,当删除这个对象中的纪录时,只是修改了内存中的信息,而不会真正去修改数据库文件