描述:
我写了调用ADO执行存储过程的程序,结果运行起来内存狂涨(从任务管理器上看到的),而且不会降回来。请大家看看是怎么回事!!!!
在InitInstance开始处加入:
AfxOleInit();
在对话框类中加入成员变量:
_ConnectionPtr pConn;
在OnInitDialog中对其初始化:
pConn.CreateInstance(__uuidof(Connection));
pConn->Open(_bstr_t("Provider=OraOLEDB.Oracle;Data Source=aa;User Id=lx;Password=lx"),_bstr_t(L""),_bstr_t(L""),0);
然后就执行存储过程10000次(在OnInitDialog中)
for(int i=0;i<10000;i++)
{
callproc();
}
相应的callproc为:
_ParameterPtr pPar1,pPar2;
_CommandPtr pCmd(__uuidof(Command));
pCmd->CommandText=_bstr_t("Delay_SP");
pCmd->ActiveC />
pCmd->CommandType=adCmdStoredProc;
pPar1=pCmd->CreateParameter(_bstr_t("Terri_ID"),adVarChar,adParamInput,32,
_variant_t(_bstr_t("123")));
pCmd->Parameters->Append((IDispatch*)pPar1);
pPar2=pCmd->CreateParameter(_bstr_t("v_cardid"),adVarChar,adParamOutput,32);
pCmd->Parameters->Append((IDispatch*)pPar2);
pCmd->Execute(NULL,NULL,adCmdStoredProc);
char test[100];
strcpy(test,(char*)_bstr_t(pPar2->Value));
static int y=0;
y++;
TRACE("%s, %d\n",test,y);
pCmd->ActiveC />
pCmd.Release();
执行时,从任务管理器看到内存不停的增涨,而且循环次数到了后,内存也不降下来。
实在是搞不定了,请各位大侠帮帮忙。
存储过程相当简单,就是一个输入参数,一个输出参数,存储不处理,直接返回一个值。