连服务器读数据,服务器内存泄露???高手帮忙

yaozhiyong110 2010-01-19 11:18:02
CMyAdoConnect::CMyAdoConnect(void)
{
m_Pconn.CreateInstance("ADODB.connection");
}

CMyAdoConnect::~CMyAdoConnect(void)
{
if (m_Prec)
{
if (m_Prec->State)
{
m_Prec->Close();
m_Prec.Release();
}
}
if (m_Pconn)
{
if (m_Pconn->State)
{
m_Pconn->Close();
m_Pconn.Release();
}
}
}

BOOL CMyAdoConnect::CloseCon()
{
BOOL res1 = FALSE,res2 = FALSE;
if (m_Prec)
{
if (m_Prec->State)
{
m_Prec->Close();
m_Prec.Release();
m_Prec = NULL;
res1 = TRUE;
}
}
if (m_Pconn->State)
{
m_Pconn->Close();
m_Pconn.Release();
m_Pconn = NULL;
res2 = TRUE;
}
return res1 && res2;
}

void CMyAdoConnect::ReCreate()
{
m_Pconn.CreateInstance("ADODB.connection");
}

类成员: _RecordsetPtr m_Prec;
_ConnectionPtr m_Pconn;

上面四个是 自己的ADO类的初始化函数 我的程序本来一直连数据库读数据 后来发现服务器内存一直涨
所以就每次读数据先CloseCon了 然后再ReCreate 感觉这样断开了连接再连 服务器应该会把前面的内存释放
但是还是不行 我的程序就是不停的连数据库读数据 过几分钟就会读几次数据的 怎么服务器会占着内存不放??
...全文
77 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaozhiyong110 2010-01-20
  • 打赏
  • 举报
回复
还是没解决 不知道是不是服务器SQL的问题 还是谢谢你
aoyihuashao 2010-01-19
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/en-us/library/ms681510(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms681519(VS.85).aspx
aoyihuashao 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yaozhiyong110 的回复:]
引用 1 楼 aoyihuashao 的回复:
每次Query以后都要用m_Prec->Close();


每次查询完 m_Prec->Close();  那m_Pconn要不要close?

m_Prec->Close();  以后需不需要 ReCreate?
[/Quote]

最好整个系统之连接一次,如果系统需要,也可以每次都断开重新连接。

这个要看你怎么设计的了。
yaozhiyong110 2010-01-19
  • 打赏
  • 举报
回复
请把_RecordsetPtr m_Prec;
_ConnectionPtr m_Pconn; 这2个成员变量使用说明下 谢谢
aoyihuashao 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yaozhiyong110 的回复:]
引用 1 楼 aoyihuashao 的回复:
每次Query以后都要用m_Prec->Close();


真的?  每次执行玩SQL语句都要 m_Prec->Close();一次是吗? 这样这次查询就不会占用服务器内存了?
[/Quote]

执行Qurey,也就是SELECT语句后调用,执行其他的不用。
yaozhiyong110 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aoyihuashao 的回复:]
每次Query以后都要用m_Prec->Close();
[/Quote]

每次查询完 m_Prec->Close(); 那m_Pconn要不要close?

m_Prec->Close(); 以后需不需要 ReCreate?
yaozhiyong110 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aoyihuashao 的回复:]
每次Query以后都要用m_Prec->Close();
[/Quote]

真的? 每次执行玩SQL语句都要 m_Prec->Close();一次是吗? 这样这次查询就不会占用服务器内存了?
_JeffreyWu 2010-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 aoyihuashao 的回复:]
每次Query以后都要用m_Prec->Close();
[/Quote]
UP
aoyihuashao 2010-01-19
  • 打赏
  • 举报
回复
每次Query以后都要用m_Prec->Close();

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧