因本人有需求需要每隔5秒扫一次数据库然后进行数据处理,采用定时器的方式,每隔5秒创建与SQLSERVER2000的连接,在此过程中,我发现系统资源被逐渐耗尽
void CHttpClinetDlg::OnTimer(UINT nIDEvent)
..........
_ConnectionPtr pMyConnect=NULL;
HRESULT hr=pMyConnect.CreateInstance(__uuidof(Connection));
_bstr_t strConnect="Provider=SQLOLEDB; Server=***.***.***.***;Database=SMS; uid=sa; pwd=*****;";
pMyConnect->Open(strConnect,"","",NULL);
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
..........
我想将_ConnectionPtr等变量定义为放在类中的PUBLIC中,无奈可能因为还没初始化的原因,不能申明这个变量.我现在分析是因为定时齐每5秒执行一次以上的代码,在创建变量的时候消耗了内存,但是,我又不知道如何解决,请大家指点一下吧,谢谢了
void CHttpClinetDlg::OnTimer(UINT nIDEvent)
..........
_ConnectionPtr pMyConnect=NULL;
HRESULT hr=pMyConnect.CreateInstance(__uuidof(Connection));
_bstr_t strConnect="Provider=SQLOLEDB; Server=***.***.***.***;Database=SMS; uid=sa; pwd=*****;";
pMyConnect->Open(strConnect,"","",NULL);
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
..........
我想将_ConnectionPtr等变量定义为放在类中的PUBLIC中,无奈可能因为还没初始化的原因,不能申明这个变量.我现在分析是因为定时齐每5秒执行一次以上的代码,在创建变量的时候消耗了内存,但是,我又不知道如何解决,请大家指点一下吧,谢谢了
pMyConnect->Close();
pMyConnect.Release();
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL)) //或者CoInitialize()
{
AfxMessageBox("初始化COM组件库错误");
}
下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);