ado会产生内存碎片?

ringphone 2005-11-23 12:34:01
实现了一个SOCKET服务程序,根据客户端发来的数据查询数据库,然后将结果集数据编码返回给客户端。
数据库操作部分是产生了一个Connection对象,连接数据库后Recordset = Connection->Execute(查询的SQL语句...),通过Recordset取得数据然后编码发回客户端,再Recordset->Close();Recordset=NULL;释放。结果压力测试时服务程序连续运行两天两夜后莫名其妙地无故退出。try,catch都没用。后来想到可能是Connection->Execute频繁产生Recordset对象,释放,导致内存碎片,于是改成产生Recordset对象,调用Recordset->Open,数据处理完毕后Recordset->Close();但不调用Recordset=NULL完全释放,保留该对象,继续下一次的Open,结果问题解决。
现在服务程序要求加入数据库插入,更新,删除功能,看了看MSDN的说明,Command和Connection的Execute都是返回Recordset对象的,如果是不返回结果集的操作,比如insert,update,delete,返回的是一个关闭的Recordset,那这样会不会产生内存碎片呢?因为测试出结果最少要两天的时间,特在此向有经验的朋友请教。试了一下,Recordset->Open是可以执行insert,update,delete操作的,但无法取得影响的记录条数,即无法知道update,delete了多少条记录。
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cenchure 2005-11-23
  • 打赏
  • 举报
回复
这个问题在发了很就这么没人回
cenchure 2005-11-23
  • 打赏
  • 举报
回复
//rs 数据库为ACCESS 写图象进入时候 sql="select * from table where id=1"
//byte* pByte
//得到了RS
CComVariant buf= pByte;
//第6为一OLE 对象类型
rs->PutCollent((long)6,buf);/////////这里出错了
rs->Update();
请人指点啊
duyhui 2005-11-23
  • 打赏
  • 举报
回复
如果执行insert,update,delete等操作,用Connection对象执行
如果只是查询,用Recordset对象

这样不会有问题的
hugoon 2005-11-23
  • 打赏
  • 举报
回复
感觉是这样,数据库越用越占资源!

4,012

社区成员

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

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