vb ADODB.Recordset 简单内存释放问题
,这是模块里定义的函数
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
Set rs = Nothing
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次以上,小程序安装在服务器的,长久下去服务器必死啊。。
[解决办法]
是哪里的内存满了?如果是服务器的内存,说明部署不合理。
代码看着没什么问题,一般来说查询都是临时的,rs应该都用临时变量而非公共变量。
[解决办法]
http://download.csdn.net/source/1498324
[解决办法]
测试以下方式,看看如何:
dim rs As ADODB.Recordset '公共strSql = "select ……"Set rs = Open_rst_from_str(strSql)……rs.CloseSet rs = NothingstrSql = "select ……"Set rs = Open_rst_from_str(strSql)……rs.CloseSet rs = Nothing
[解决办法]