ADO + SQL Server:为什么事务处理会影响_RecordsetPtr查询结果??
大家好,我的代码大致如下:
现在的情况是:
如果加上语句1和2,即BeginTrans()和CommitTrans(),那么执行语句3:VARIANT_BOOL res = recordset_ptr->BOF时
直接跳到异常里:灾难性故障。
如果注释掉语句1和2,即BeginTrans()和CommitTrans(),那么一切正常。
请问大家这是怎么回事?什么原理??
void foo()
{
try
{
_variant_t affected = 0;
_RecordsetPtr recordset_ptr = NULL;
_ConnectionPtr connection_ptr = NULL;
recordset_ptr.CreateInstance(__uuidof(Recordset));
connection_ptr.CreateInstance(__uuidof(Connection));
// 打开链接
connection_ptr->open(...)
// 执行查询
connection_ptr->BeginTrans(); // 1
recordset_ptr = connection_ptr->Excute(_bstr_t("select * from table_foo"), &affected, adCmdText);
connection_ptr->CommitTrans(); // 2
VARIANT_BOOL res = recordset_ptr->BOF; // 3
...
}
catch(_com_error &e)
{
e.ErrorMessage();
}
}
现在的情况是:
如果加上语句1和2,即BeginTrans()和CommitTrans(),那么执行语句3:VARIANT_BOOL res = recordset_ptr->BOF时
直接跳到异常里:灾难性故障。
如果注释掉语句1和2,即BeginTrans()和CommitTrans(),那么一切正常。
请问大家这是怎么回事?什么原理??
...全文
相关推荐
VC++ 中ADO数据库的配置(SQLServer2005)
- `_RecordsetPtr m_pRecordset;`:这是一个指向`_Recordset`对象的智能指针,用于存储查询结果。4.
MFC超市仓库管理系统:C++桌面开发教学实践指南
MFC(Microsoft Foundation Classes)是Windows平台下经典的C++ GUI开发框架,其消息机制、资源管理与Windows API封装逻辑,为初学者理解桌面应用底层原理提供了不可替代的教学入口。结合超市仓库这一典型业务场景,项目以Access数据库为数据存储载体,通过DAO模式、分层架构与工程化细节(配置文件、日志系统、编码适配),系统性串联C++语法、数据库操作、软件工程规范与UI交互设计四大核心能力。它不追求技术前沿,而聚焦‘可运行、可调试、可演进’的教学闭环,帮助学习者
MFC用ADO读写Access数据库实例
同时,ADO也支持事务处理、参数化查询等高级功能,为数据库应用开发提供了强大支持。
C++使用ADO实现存取图片的方法
在操作过程中,使用RecordsetPtr对象来执行SQL查询,并将结果集存储在RecordsetPtr对象中。
数据库在vc中用ado连接oracle的几种方法
##### 连接示例```cppBOOL CTestconDlg::ConnectDatabase(){ CString m_server, m_data, m_uid, m_pwd; m_server


数据库
