使用CDatabase进行事务处理
来源:互联网 发布:男士轻奢服装品牌 知乎 编辑:程序博客网 时间:2024/05/22 06:39
程序清单9-21 使用ExecuteSQL()方法示例
CDatabase dbSchool;
dbSchool.Open( "School", FALSE, FALSE, "ODBC;" );
dbSchool.ExecuteSQL( “UPDATE Student SET ClassID=32 WHERE ClassID=32” );
dbSchool.Close();
9.2.8 使用CDatabase进行事务处理
由本章的9.1.2小节,我们知道数据库的完整性包括实体完整性和参照完整性。当数据库满足完整性规则时,又称数据库处于一致状态。为保证完整性,在插入和删除多张表的数据时,需要将某些操作作为一个整体来执行而不允许被打断,因此就出现了事务的概念。
事务允许把一些SQL语句作为一个整体来执行,如果事务中的一个SQL语句出错,整个事务都会失败,并回到事务执行前的状态。
事务具有原子性,一致性,隔离性和持久性。原子性是指事务作为一个操作单元,或者全部完成,或者全部不做。一致性是指事务将数据库从一个一致状态转换到另一个一致状态。隔离性是指一个正在执行的事务在结束前不会让其它事务看到自己的运行结果。持久性是指当事务完成后,它对数据库的操作结果是永久的,不能再被擦除。
使用MFC ODBC类时,为开始一个事务,应该调用CDatabase::BeginTrans(),然后调用CDatabase::ExecuteSQL()执行这个事务,或者使用从该CDatabase产生的CRecordset对象执行这个事务。事务的结束有两种:当所有的操作成功时,用CDatabase::CommitTrans()提交事务;当发生错误时,用CDatabase::RollBack()放弃事务,并回到事务执行前的状态。
程序清单9-22是使用CDatabase进行事务处理的一个例程,它向School数据库的Teacher表和Class表同时添加记录。
程序清单9-22 事务处理例程
CDatabase *pDB=new CDatabase;pDB->Open( _T("datasource"), FALSE, FALSE, _T("ODBC;UID=sa;PWD=1;"));try{if(pDB->BeginTrans())TRACE("Transaction started/n");elseTRACE("Error in starting transaction./n");pDB->ExecuteSQL(_T("INSERT INTO student VALUES (2 , 'ge', '女')"));//pDB->ExecuteSQL(_T("INSERT INTO Class VALUES (‘33’, ‘T0005’, ‘28’, ’86.1’)"));if(pDB->CommitTrans())TRACE("Transaction commited/n");elseTRACE("Error in committing transaction./n");}catch (CDBException *e){TRACE(e->m_strError);if(pDB->Rollback())TRACE ("Transaction rolled back/n");elseTRACE("Error in rolling back transaction./n");}pDB->Close();delete pDB;
- 使用CDatabase进行事务处理
- 使用CDatabase进行事务处理
- 使用注解进行事务处理
- 使用.NET Framework 进行事务处理
- Hibernate 使用session 进行事务处理
- CDataBase
- CDatabase
- JavaBean中使用JDBC方式进行事务处理
- JavaBean中使用JDBC方式进行事务处理
- JavaBean中使用JDBC方式进行事务处理
- JavaBean中使用JDBC方式进行事务处理
- 正确的使用@Transactional进行数据库事务处理
- 理解事务处理、事务处理的隔离级别,和使用JDBC进行事务处理
- 理解事务处理、事务处理的隔离级别,和使用JDBC进行事务处理
- 理解事务处理、事务处理的隔离级别,和使用JDBC进行事务处理
- 使用CDatabase类读取Access数据库
- 理解事务处理、事务处理的隔离级别,和使用JDBC进行事务处
- Java Bean 中使用JDBC方式进行事务处理
- Smart Form 系列教程(六)
- 2011-1-16
- 利用select语句进行create table
- 《那些年,我们一起追过的女孩》观后感
- html控件的name不能和本身事件方法同名
- 使用CDatabase进行事务处理
- Why I Won’t Hire You
- NET3.5 的OracleConnection对象连接Oracle数据库的bug
- 如何从web.config里获取connectionString的值
- LINUX下访问WINDOWS共享文件
- 适易快速开发、查询分析、工作流、内容管理及项目管理试用版下载
- android读取xml
- Android JNI知识简介
- Android在线开发工具 App Inventor