事务——transaction ,它有一个典型的特点:ACID
A——原子性:事务是一个整体,不能再拆分,要么都执行要么都不执行;
C——一致性:事务执行之前和执行之后的数据要一致;
I——隔离性:事务在执行过程中,所有与事务相关的对象都不能再执行其他的操作(相当于被隔离起来)
D——持久性:事务在遇到某种特殊情况导致操作未执行完的时候,数据会回滚到最初状态
事务分为两类:
一,链接内事务:在链接打开后,使用事务控制多条语句的执行
1,创建事务对象
SqlTransaction trans=conn.BeginTransaction(); //注意必须是链接打开后编写
2,把事务对象挂到命令对象上,让命令执行带有事务的功能
cmd.Transaction=trans;
3,执行CommandText命令操作数据库
(1)成功后调用事务对象的Commit()方法来提交执行的结果。
(2)失败后调用事务对象的Rollback()方法来回滚执行前的状态。
二,跨链接的事务:TransactionScope对象
使用该类事务的步骤:
1,启动服务:DTC 分步式事务协调器
2,引用事务程序集,在解决方案管理器的引用中,右键添加引用:system.Transactions
3,使用using system.Transactions 把命名空间导进来
4,使用TransactionScope类来控制事务。
using (TransactionScope ts = new TransactionScope())
{
DeleteWork("p001");
DeleteFamily("p001");
DeleteInfo("p001");
ts.Complete(); //必须。它是用来提交事务的。
}