首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2012-02-01 
vb ADODB.Recordset 简单内存释放问题,这是模块里定义的函数Public Function Open_rst_from_str(ByVal str

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
[解决办法]
测试以下方式,看看如何:

VB code
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
[解决办法]
探讨

我查看任务管理器发现就是 sqlserver.exe 这个进程内存使用不断的在增加,我的程序退出后,它的值都还是和原来一样,不被释放。。。

有没有人帮帮忙啊?

热点排行