1、因为并不知道这是啥问题,所以进一步修改,异常捕获改成下列形式,运行看看具体的错误描述:
try
{
//你的ADO代码
}
catch (_com_error e)
{
CString errormessage =_T("");
errormessage.Format(_T("Warning: Xxxxxx() 方法发生异常.错误描述:%s 错误消息 %; 文件: %s; 行: %d\n"),e.Description(),e.ErrorMessage(),__FILE__, __LINE__);
TRACE (errormessage);
}
2、再次运行捕获异常看到了错误描述:”对象关闭时,不允许操作”
(1)像插入和删除等不是查询的的命令,没必要返回一个命令集。返回的命令集的字段数是0,若调用adoeof或其他某些接口就会报错的。在使用结果集对象时,最好要先关闭结果集,然后再用Open()打开新的结果集。
(2)原因还可能是m_Recordset->close()关闭的是记录集,而SQL的insert、delete等操作是没有返回记录集的,如果这样没有返回记录集而去关闭记录集,就会出错。
小节思考:
1、关于记录集和连接对象的关闭和释放,要准确的进行判断之后再执行,否则一旦发生对已释放对象进行操作的错误,就会产生严重的错误!
2、今后在编写代码的时候,要把可能会有问题的代码全都加上异常捕获机制,这样在调试运行时有错也会及时的捕获到异常问题的描述,便于对症下药。