ADO连数据操作中,出现ADO异常的情况下如何关闭记录集(m_recordset)了?
使用ADO的连接方式.
ADO类做为单例的,在初始化就已经建立好连接(m_connection)和记录集(m_recordset)了.
在不同的数据库操作的方法中直接使用连接和记录集.
例如在插入记录时:
//打开记录集:
try{
hr = m_recordset->Open(query, source, adOpenDynamic,
adLockOptimistic, adCmdText);
}
//执行插入
try{
m_recordset->AddNew();
...........
m_recordset->Update();
fields->Release();
field->Release();
m_recordset->Close();
return true;
}
catch(_com_error &e2){
CString str=(char*)e2.ErrorMessage();
str += e2.Description();
::MessageBox(NULL,str+"\r\n插入数据出错。","提示",
MB_OK | MB_ICONWARNING);
m_recordset->Close();///?????这里有问题了?
return false;
}
问题出在在catch{}语句,如果插入数据不成功,跳到catch块后,这个地方不能执行:m_recordset->Close(),一执行就导致程序死掉了.
但如果这里不关闭记录集就直接退出的话,程序是可以接着运行,但这个m_recordset没有Close掉,下次进到这个方法中时或者下次别的方法中要用到m_recordset时,一打开记录集就出错,因为这个记录集是没有关闭的
//打开记录集:
try{
hr = m_recordset->Open(query, source, adOpenDynamic,
adLockOptimistic, adCmdText);
}
//这里出错.
这样一来,就导致我的程序一出现ADO错误就会死掉.因为如何处理这个问题了?