vb ADODB.Recordset 简单内存释放问题

,这是模块里定义的函数PublicFunctionOpen_rst_from_str(ByValstrAsString)AsADODB.RecordsetOnErrorG... ,这是模块里定义的函数
Public Function Open_rst_from_str(ByVal str As String) As ADODB.Recordset
On Error GoTo er:
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
rs.Open str, conn, , , adCmdText
Set Open_rst_from_str = rs
Exit Function
er:
Open App.Path & "\日志\日志.txt" For Append As #1
Print #1, Now & " 查询出错 :" & err.Description & " sql: " & str
Close #1
End Function

'程序里调用
dim rs As ADODB.Recordset '公共
strSql = "select ……"
Set rs = Open_rst_from_str(strSql)
……
rs.Close

’ strSql = "select ……"
Set rs = Open_rst_from_str(strSql)
……
rs.Close

多次调用后内存就爆满了,我想问,
1如上我的代码怎么释放内存呢?
2哪个地方引起的内存没释放呢?
刚接触vb,望大虾能耐心讲解下,项目里非常非常频繁的使用那个函数,有时候1秒内便查询近10次以上,小程序安装在服务器的,长久下去服务器必死啊。。
展开
 我来答
joyjerry7
2011-08-16 · TA获得超过3438个赞
知道小有建树答主
回答量:2510
采纳率:25%
帮助的人:1740万
展开全部
Open_rst_from_str里定义的rs对象与调用时定义的rs对象是两个不同的对象,你在Open_rst_from_str函数里不释放rs对象,会导致连接数据库服务器的session数只增不减,服务器当然会S翘翘啦。
更多追问追答
追问
不好意思啊,我贴上来的时候漏了一句
源码是这样的:
……
rs.LockType = adLockOptimistic
rs.Open str, conn, , , adCmdText
Set Open_rst_from_str = rs
set rs = Nothing
Exit Function
……
调用:
Set rs = Open_rst_from_str(strSql)
……
rs.Close
set rs = nothing
这样依旧爆增内存。
追答
你的conn在哪里定义的?是全程变量吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式