您的位置:首页 > 其它

对记录集出现的一些问题的总结

2012-09-15 19:14 113 查看
1.set rs =nothing和rs.close的异同点
setrs=nothing是清空对象 ,要将对象从内存中完全删除,可将对象变量设置为
Nothing。
rs.close
是关闭对象, 使用 Close方法可关闭 Connection
对象或 Recordset对象以便释放所有关联的系统资源。关闭对象并非将它从内存中删除,可以更改它的属性设置并且在此后再次打开。
联系实际:拿一个装了水的瓶子比喻:set rs=nothing就是把水倒掉,当你要喝时它已经没有了,只能再一次的装水才可以;而rs.close是将水杯的盖子盖住,当你想喝水时,只要打开盖子就可以了,水还是存在的。
2.

Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As adodb.Recordset

'执行SQL语句,注意理解函数返回值是一个记录集

Dim cnn As adodb.Connection
Dim rst As adodb.Recordset
Dim sTokens() As String

On Error GoTo ExecuteSQL_error '错误处理
sTokens = Split(SQL)
Set cnn = New adodb.Connection
cnn.Open ConnectString

If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '判断传入的SQL语句是以insert ,delete,update 开头的吗?
cnn.Execute SQL '若是,则执行语句 insert,delete,update语句不用打开记录集操作,直接使用cnn.execute即可。
MsgString = sTokens(0) & "query successful"
Else '若不是,则执行查询语句
Set rst = New Recordset
rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic '将查询结果放在记录集中
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End If

在这个位置不能关闭记录集rst或释放rst的空间

ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function

ExecuteSQL_error:
MsgString = "查询错误" & Err.Description
Resume ExecuteSQL_Exit
End Function
ExecuteSQL这个记录集是rst的缓存对象,所以当rst的变动会影响到ExecuteSQL这个记录集,如rst.close;而set rst=nothing后,rst就从实际对象中分离出来了,而通过rst对象创建的对象都将被孤立。这些已缓存对象的任何属性依然可用
3.
通过记录集的操作:
记录集是一个对象:有它自身的方法,常见的有addnew,update,delete,open,close,find,move等
并没有select这样的方法,所以不能直接查询;要想查询就等用open方法,和sql查询语句。
刚开始学的时候有一个误区:认为任何操作都要先打开记录集。

通过connection对象的操作:
connection对象的方法有:open,close,execute

·Execute方法
该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:
一.执行SQL查询语句时,将返回查询得到的记录集。用法为:
Set 对象变量名=连接对象.Execute("SQL 查询语言")
Execute方法调用后,会自动创建记录集对象,并将查询结果存储在该记录对象中,通过Set方法,将记录集赋给指定的对象保存,以后对象变量就代表了该记录集对象。
二.执行SQL的操作性语言时(如:delete,update等),没有记录集的返回。此时用法为:
连接对象.Execute "SQL 操作性语句" [, RecordAffected][, Option]
·RecordAffected 为可选项,此出可放置一个变量,SQL语句执行后,所生效的记录数会自动保存到该变量中。通过访问该变量,就可知道SQL语句队多少条记录进行了操作。
·Option 可选项,该参数的取值通常为adCMDText,它用于告诉ADO,应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数,可使执行更高效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: