采用短连接,使用ADO连接oracle,每6秒钟执行一次连接和释放,即使中间什么操作也不作,该程序所占用句柄数仍然增长很快,系统不久会崩溃?如何解决?下面是
采用的ADO的部分代码:
while(1)
{
...
_ConnectionPtr pConn;CString strConnection = "Provider=MSDAORA;Data Source=" + m_dbserver +
";User ID=" + m_username + "; Password=" + m_passwd;
hr = pConn.CreateInstance(__uuidof(connection));if(SUCCEEDED(hr))
{
hr=pConn->Open((_bstr_t)strConnection,"","",-1);
}...pConn->Close();
pConn = NULL
...sleep(6000);
}如何解决呀????
采用的ADO的部分代码:
while(1)
{
...
_ConnectionPtr pConn;CString strConnection = "Provider=MSDAORA;Data Source=" + m_dbserver +
";User ID=" + m_username + "; Password=" + m_passwd;
hr = pConn.CreateInstance(__uuidof(connection));if(SUCCEEDED(hr))
{
hr=pConn->Open((_bstr_t)strConnection,"","",-1);
}...pConn->Close();
pConn = NULL
...sleep(6000);
}如何解决呀????
解决方案 »
- 拆分窗口能否为子窗口单独设置菜单?
- 请问下面的程序本质的区别在哪里,char *t,*s;和char t[20],s[20];不是同一个意思吗?
- 为什么开启线程, 我的图形界面就响应特别慢?
- 关于SetPolyFillMode (hdc, iMode) ALTERNATE和WINDING的问题
- 请问如何将局域网中某一计算机中的共享文件COPY到本地计算机
- 请问如何将一个字符连接在字符串(char*型)后?谢谢!
- 如何控制线程的启动和中止?分不够再加
- 请教各位:如果已知某文件的后缀名,怎么通过访问注册表得到在当前系统中这类文件的图标?
- 内存不够,继承类
- 什么是环境变量呢,高手指教啊~~~~~~~~~~~~~~~~~~~~
- 急,各位大师,请问一下编译错的,什么原因?谢谢
- 关于摄影坐标到投影坐标变换的问题(读《Visual C++/DirectX9 3D游戏开发导引》后产生的问题)
pConn- >Release();
pConn.Release();
pConn = NULL
... sleep(6000);
} 在release时出现com异常,然后我改为直接release,把close()注释掉,结果句柄增加很快!还有啥高招啊!!!
快别学了,楼主
什么年代了,还用vc做数据库应用啊,呵呵
快别学了,楼主
什么年代了,还用vc做数据库应用啊,呵呵
快别学了,楼主
什么年代了,还用vc做数据库应用啊,呵呵
快别学了,楼主
pConn->Close();//关闭_Connection
pConn.Release();//释放COM资源
顶多再为指针设定为NULL吧.
没听说还要CloseHandle(pConn)的啊,会不会报错都不知道.
安全的释放过程就是pRec->Close();
pRec.Release;
pRec=NULLpCommand->Release;
pCommand=NULL;pConn->Close();
pConn.Release;
pConn=NULL;我测试了一下,如果想彻底的释放句柄资源.必需使pConn生命周期结束交给系统释放.如果你是模块化调用,倒也问题不大.模块Destroy后,也就相应的释放了这些局部资源.
ConnectionPtr pConn; //这句移出循环体就可以了
while(1)
{
...
CString strConnection = "Provider=MSDAORA;Data Source=" + m_dbserver +
";User ID=" + m_username + "; Password=" + m_passwd;
hr = pConn.CreateInstance(__uuidof(connection)); if(SUCCEEDED(hr))
{
hr=pConn->Open((_bstr_t)strConnection,"","",-1);
} ... pConn->Close();
pConn = NULL
... sleep(6000);
}