以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  mysql连接内存释放  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124385)

--  作者:z769036165
--  发布时间:2018/9/5 11:41:00
--  mysql连接内存释放
Dim conn As MySql.Data.MySqlClient.MySqlConnection
Dim cmd As MySql.Data.MySqlClient.MySqlCommand
Dim connStr As String = "server=192.168.1.1; port=3301; user id=root; password=root ; database=test;CharSet=utf8" \'设置你的数据库连接字符串,注意我设置了字符编码为utf8,如果你的mysql里有中文字段,读取出来是乱码,就要记得设置mysql里你的字段的字符编码用utf8,这个世界最通用的字符编码格式!
conn = New MySql.Data.MySqlClient.MySqlConnection(connStr)
conn.Open
Dim mda1 As New MySql.Data.MySqlClient.MySQLDataAdapter("SE LECT * from po" , conn) \'这里可以设置你的查询语句
Dim ds1 As New System.Data.DataSet()
mda1.Fill(ds1, "TableTemp1") \'MySQLDataAdapter方法把数据放到一个新建的临时表里,这个临时表名可自定义,我这里写TableTemp
e.form.controls("Table1").Table.DataSource = ds1.Tables("TableTemp1") \'把刚才的临时表TableTemp填充到我们的控件Table1里
conn.close


请问这个mysql链接读取,在窗口中的读取内存不会释放,有没有办法可以对这个内存进行释放,测试了gc.collect()没有效果。

--  作者:有点甜
--  发布时间:2018/9/5 11:58:00
--  

试试

 

Dim conn As MySql.Data.MySqlClient.MySqlConnection
Dim cmd As MySql.Data.MySqlClient.MySqlCommand
Dim connStr As String = "server=192.168.1.1; port=3301; user id=root; password=root ; database=test;CharSet=utf8" \'设置你的数据库连接字符串,注意我设置了字符编码为utf8,如果你的mysql里有中文字段,读取出来是乱码,就要记得设置mysql里你的字段的字符编码用utf8,这个世界最通用的字符编码格式!
conn = New MySql.Data.MySqlClient.MySqlConnection(connStr)
conn.Open

Using mda1 = New MySql.Data.MySqlClient.MySQLDataAdapter("SE LECT * from po" , conn) \'这里可以设置你的查询语句
Dim ds1 As New System.Data.DataSet()
mda1.Fill(ds1, "TableTemp1") \'MySQLDataAdapter方法把数据放到一个新建的临时表里,这个临时表名可自定义,我这里写TableTemp
e.form.controls("Table1").Table.DataSource = ds1.Tables("TableTemp1") \'把刚才的临时表TableTemp填充到我们的控件Table1里
conn.close
End Using

 


--  作者:z769036165
--  发布时间:2018/9/5 13:09:00
--  
还是一样的
--  作者:有点甜
--  发布时间:2018/9/5 15:01:00
--  

Dim conn As MySql.Data.MySqlClient.MySqlConnection
Dim cmd As MySql.Data.MySqlClient.MySqlCommand
Dim connStr As String = "server=192.168.1.1; port=3301; user id=root; password=root ; database=test;CharSet=utf8" \'设置你的数据库连接字符串,注意我设置了字符编码为utf8,如果你的mysql里有中文字段,读取出来是乱码,就要记得设置mysql里你的字段的字符编码用utf8,这个世界最通用的字符编码格式!
conn = New MySql.Data.MySqlClient.MySqlConnection(connStr)
conn.Open
Dim mda1 As New MySql.Data.MySqlClient.MySQLDataAdapter("SE LECT * from po" , conn) \'这里可以设置你的查询语句
Dim ds1 As New System.Data.DataSet()
mda1.Fill(ds1, "TableTemp1") \'MySQLDataAdapter方法把数据放到一个新建的临时表里,这个临时表名可自定义,我这里写TableTemp
e.form.controls("Table1").Table.DataSource = ds1.Tables("TableTemp1") \'把刚才的临时表TableTemp填充到我们的控件Table1里
conn.close
vars("mda") = mda1
vars("ds") = ds1

 

-----关闭窗口之后

 

vars("mda").dispose
vars("mda") = Nothing
vars("ds").dispose
vars("ds") = Nothing
gc.Collect


 


--  作者:z769036165
--  发布时间:2018/9/5 15:27:00
--  
好一些了,但是还是不停的在增加,只是增长的值比以前少一半左右,原来打开一次增长60M,现在30~40M左右,会释放一些,网上找了个
System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5);这个也没用,看着是少了,但一操作又变回原来的内存大小。

--  作者:z769036165
--  发布时间:2018/9/5 15:32:00
--  
但是感觉好像后面在打开的时候增加的内存比之前的多了。。。。
[此贴子已经被作者于2018/9/5 15:32:06编辑过]

--  作者:有点甜
--  发布时间:2018/9/5 15:32:00
--  
你执行4楼第一段代码以后,关闭窗口,再在命令窗口执行第二段代码,也不能释放内存?
--  作者:z769036165
--  发布时间:2018/9/5 15:36:00
--  
我是放在窗口关闭后执行的,没什么特别大作用
--  作者:z769036165
--  发布时间:2018/9/5 15:39:00
--  
怎么在命令窗口执行第2段代码啊?不设置全局变量显示未设置对象变量,设置了的话但是全局变量里面类型都与这个不符啊?
[此贴子已经被作者于2018/9/5 15:39:33编辑过]

--  作者:有点甜
--  发布时间:2018/9/5 15:49:00
--  
以下是引用z769036165在2018/9/5 15:39:00的发言:
怎么在命令窗口执行第2段代码啊?不设置全局变量显示未设置对象变量,设置了的话但是全局变量里面类型都与这个不符啊?
[此贴子已经被作者于2018/9/5 15:39:33编辑过]

 

执行第一段代码后,就可以执行第二段代码的。

 

vars变量可以自动添加的,你没有用最新版foxtable?