【www.gdgbn.com--Action】

 

最简单扼要的方法

 

 

1.在数据库教程中进行处理,主要使用begin transaction,commit transaction,rollback transaction三个操作来实现,另外通过借助@@error函数获取sql语句执行过程中是否发生了错误。

declare @error int
begin transaction
update accountofbank set balance=balance+5000 where accountname="张三"
set @error=@error+@@error
update accountofbank set balance=balance-5000 where accountname="李四"
set @error=@error+@@error
if(@error<>0)
rollback transaction
else
commit transaction
2.使用asp教程.net的事务处理类来操作  
sqlconnection con = new sqlconnection("server=.;database=test;uid=sa;pwd=123456");
con.open();
sqltransaction tran = con.begintransaction();
sqlcommand cmd = new sqlcommand();
cmd.connection = con;
cmd.transaction = tran;
try
{
cmd.commandtext = "update accountofbank set balance=balance-5000 where accountname="张三"";
cmd.executenonquery();
cmd.commandtext = "update accountofbank set balance=balance+5000 where accountname="李四"";
cmd.executenonquery();
tran.commit();
}
catch (exception)
{
tran.rollback();
}
finally
{
con.close();
}
总结一下

事务控制或者事务管理,是指关系型数据库管理系统执行数据库事务的能力。事务是最基本的工作单元,事务中的sql语句必须按照逻辑次序执行,并且要就是成功的执行整个工作单元的操作,要么就一点也不执行。

比如有一个表area,保存用户的家庭地址,在同一时间内,由两个用户同时对着一个表进行操作,一个用户的操作是:
select  * from area
另外一个是:
update area(address)  values(“深圳市福田区园岭西路”)
则第一个用户选出来的地址是原来数据苦中存在的地址,还是更新后的地址呢?结果显示,在select过程中出现修改,则原来的信息是无效的。

在sql server 中,创建事务的语句是:
begin {transaction | tran}[transaction_name]
由于我们这本书不是专门介绍sql server的,所以在此就不涉及得太多了,大家有兴趣可以

 

transactionoptions options = new transactionoptions();
                    options.isolationlevel = system.transactions.isolationlevel.readcommitted;
                    options.timeout = transactionmanager.defaulttimeout;
                    using (transactionscope scope = new transactionscope(transactionscopeoption.required, options))
                    {
//具体内容

本文来源:http://www.gdgbn.com/flash/28785/