一天内存使用从8M上升到32M, ado已经更新到最新版本,vc win32 程序全部代码:
#include "stdafx.h"
#include "stdio.h"int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here. CoInitialize(NULL); _ConnectionPtr pConn("ADODB.Connection");
pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"scd.mdb\"", "", "", 0); MessageBox(NULL, "Start testing", NULL, 0); long bytes = 1;
long duration = 1;
char ip[16];
strcpy(ip, "1.1.1.1"); long sec = 1;
char path[256];
strcpy(path, "\\path1\\path2");
char id[25];
strcpy(id, "abcdefgh-123456789012345"); char d[20]; while(1){ SYSTEMTIME st;
GetLocalTime(&st);
sprintf(d, "%04d-%02d-%02d %02d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); char sql[128];
sprintf(sql, "select * from bills where time='%s' and id='%s'", d, id); try{
_RecordsetPtr rs("ADODB.Recordset");
rs->Open(sql, _variant_t((IDispatch *)pConn, true), adOpenForwardOnly, adLockOptimistic, adCmdText); if(rs->adoEOF){
rs->AddNew();
rs->PutCollect("time", d);
rs->PutCollect("id", id);
}
rs->PutCollect("bytes", bytes);
rs->PutCollect("duration", duration);
rs->PutCollect("ip", ip);
rs->PutCollect("sec", sec);
rs->PutCollect("path", path); rs->Update();
rs->Close();
}catch(...){}; Sleep(1000); FILE *fp = fopen("stop.txt", "rb");
if(fp){
fclose(fp);
break;
}
} pConn = NULL; CoUninitialize(); MessageBox(NULL, "App stopped!", NULL, 0);
return 0;
}
#include "stdafx.h"
#include "stdio.h"int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here. CoInitialize(NULL); _ConnectionPtr pConn("ADODB.Connection");
pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"scd.mdb\"", "", "", 0); MessageBox(NULL, "Start testing", NULL, 0); long bytes = 1;
long duration = 1;
char ip[16];
strcpy(ip, "1.1.1.1"); long sec = 1;
char path[256];
strcpy(path, "\\path1\\path2");
char id[25];
strcpy(id, "abcdefgh-123456789012345"); char d[20]; while(1){ SYSTEMTIME st;
GetLocalTime(&st);
sprintf(d, "%04d-%02d-%02d %02d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); char sql[128];
sprintf(sql, "select * from bills where time='%s' and id='%s'", d, id); try{
_RecordsetPtr rs("ADODB.Recordset");
rs->Open(sql, _variant_t((IDispatch *)pConn, true), adOpenForwardOnly, adLockOptimistic, adCmdText); if(rs->adoEOF){
rs->AddNew();
rs->PutCollect("time", d);
rs->PutCollect("id", id);
}
rs->PutCollect("bytes", bytes);
rs->PutCollect("duration", duration);
rs->PutCollect("ip", ip);
rs->PutCollect("sec", sec);
rs->PutCollect("path", path); rs->Update();
rs->Close();
}catch(...){}; Sleep(1000); FILE *fp = fopen("stop.txt", "rb");
if(fp){
fclose(fp);
break;
}
} pConn = NULL; CoUninitialize(); MessageBox(NULL, "App stopped!", NULL, 0);
return 0;
}
解决方案 »
- 怎么在view上加入toolbar或者贴一个diaglo
- 程序只能放在C盘运行,为什么?
- 想在一个静态框里放图片,并能实现放大/缩小/拖动,完整源码
- AppendMenu后菜单是灰色的
- SHFileOperation奇怪死了
- format 动态参数问题? 苦思解决不了,求高手发挥下!
- 急求助,对话框工程里使用了画笔,画刷等类,关闭时候总是出错,信息如下:
- 紧急求救,自己编写的ActiveX控件上传到WebLogic服务器上,提示下载后页面不显示该控件
- 谁有用vc作文本型数据库用于pda的,支持inner join的
- VC++里能不能嵌入SQL语句呢
- vs08sp1里有没比CRecentFileList更简便的方法管理最近的文件?
- VC中采用ODBC访问SQL SERVER 2000数据库出现读取数据停止的现象
-->
pConn->Close();
pConn.Release();
-->
pConn->Close();
pConn.Release();
pConn是智能指针,可以不需要调用Release()函数。
是否是其他地方的代码导致的。
ADO的目的是让VB等脚本语言访问数据库,本来就不是给C++
用的,你非要用C++与ADO的方式,本身就不对。建议换成OLEDB。
pConn->Close();
pConn.Release();
pConn = NULL;
pConn->Release();
pConn = NULL;
GetLocalTime(&st);
sprintf(d, "%04d-%02d-%02d %02d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);char sql[128];
sprintf(sql, "select * from bills where time='%s' and id='%s'", d, id);try{
_RecordsetPtr rs("ADODB.Recordset");
rs->Open(sql, _variant_t((IDispatch *)pConn, true), adOpenForwardOnly, adLockOptimistic, adCmdText);if(rs->adoEOF){
rs->AddNew();
rs->PutCollect("time", d);
rs->PutCollect("id", id);
}
rs->PutCollect("bytes", bytes);
rs->PutCollect("duration", duration);
rs->PutCollect("ip", ip);
rs->PutCollect("sec", sec);
rs->PutCollect("path", path);rs->Update();
rs->Close();
}catch(...){};你每次查询 都要将游标释放一次 这才正确
其次 数据库所在的机子上 本来内存就会一直涨的
这是数据库的策略 随着你查询次数增多而增加 但到达
一个最大值便不在增长 你可以修改这个值 在数据库设置里面
这不是程序的问题 是数据库处理业务的问题