更新数据库mfcc++ ODBC CRecordset
Update Database MFC C++ ODBC CRecordset
我正在开发一个MFC应用程序(SDI)来更新、添加和删除数据库中称为security的表。问题是在更新表中的一行之后,行被更新(i验证),然后当我执行另一个操作(更新另一行或删除一行)时,更新被取消。我真的不知道是否有一个问题与CRecordset或数据库本身。
//m_pSet is a an instance of a class based on CRecordSet:
m_pSet->Open();
m_pSet->Edit();
m_pSet->m_Security_Id = sec->SecurityId;
m_pSet->m_Security_Name = sec->SecurityName;
m_pSet->m_Security_Type_Id = sec->SecurityTypeStringToInt();
if (!m_pSet->Update())
{
AfxMessageBox(_T("Record not updated; no field values were set."));
}
根据我对Oracle
和SQL Server
的经验,commit
语句发生的方式是不同的。您看到的行为暗示Update
没有隐式地提交。
在Oracle
中,提交是一个显式的语句,需要在你执行了一些事务之后执行。
在SQL Server
中,提交默认是隐式的,不需要在事务之后执行。
话虽这么说,这个其他的堆栈溢出问答似乎有两种方法在SQL Server中显式提交,这意味着没有提交,你可能会丢失事务。
第一个是你可以使用BEGIN TRANSACTION
让数据库等待一个提交语句。从你的帖子来看,情况似乎并非如此。
另一种在SQL Server中使commit
语句显式的方法是通过更改数据库本身的一些设置。根据您的思路,我会检查此处提到的帖子中提到的设置,并确保您没有隐式提交。
相关文章:
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- Microsoft ODBC 无法创建有效的句柄
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 如何通过 c++ 连接到 ODBC DSN
- 如何使用ODBC创建mdb文件
- MFC ODBC SQLConfigDataSource() Unhandled Exception
- 如何使用 ODBC API 指定 TABLOCK
- CRecordset::GetFieldValue() with BIGINT
- 如何使用OTL ODBC驱动程序将C++连接到MySQL?
- Poco ODBC 库未定义的引用错误
- ODBC:如何将空字符串绑定到C 中的空
- 导致 ODBC 函数序列错误的 QSqlQuery
- SQL Server 2017 C++ ODBC 连接在 Linux 上不起作用
- Apache IGNITE编译ODBC驱动程序错误
- Visual C ODBC关闭记录集泄漏内存
- 我想使用 CMakeList 将 ODBC 集成到我的 Linux 和 Windows 代码中.txt但它只能在 Win
- Apache Ignite v2.7:无法构建 Linux ODBC 驱动程序 - 内联变量编译错误
- SQL 空返回 "stops" 使用 odbc 的 c++ 返回
- C++ ODBC SQL - 插入到表中不起作用
- 更新数据库mfcc++ ODBC CRecordset