您的位置:首页 > 编程语言 > ASP

ASP.Net中的事务处理的几种方法

2007-01-03 18:53 477 查看
1.在Sql Server数据库存储过程中
Create proc RegisterUser
(@usrName varchar(30), @usrPasswd varchar(30),@age int, @PhoneNum varchar(20), @Address varchar(50) )
as
begin
//显示定义并开始一个事务
begin tran
insert into USER(userName,userPasswd) values(@usrName,@usrPasswd)
if @@error<>0
begin
//操作失败,则事务回滚
rollback tran
//返回存储过程,并设置返回码为事务操作失败
return -1
end
insert into USERDOC(userName,age,sex,PhoneNumber,Address)
values(@Usrname,@age,@PhoneNum,@Address)
if @@error<>0
begin
//操作失败,则事务回滚
rollback tran
return -1
end
//如果操作执行正确,则提交事务
commit tran
return 0
end
2.在C#代码中利用Connection对象的BeginTransaction方法创建事务
try
{
SqlConnection con = new SqlConnection();
SqlTransaction tran = con.BeginTransaction();
string cmdText1 = "delete ...";
SqlCommand cmd1 = new SqlCommand(cmd,con);
cmd1.ExecuteNonQuery();
string cmdText = "insert ...";
SqlCommand cmd2 = new SqlCommand(cmd2, con);
cmd2.ExecuteNonQuery();
tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
throw ex;
}
3.在企业库中利用Database对象的ExcuteNonQuery方法的Transaction对象参数
//使用事务增加两个表的数据
using (DbConnection dbCon = db.CreateConnection())
{
dbCon.Open();
DbTransaction dbTran = dbCon.BeginTransaction();
try
{

//先增加会议
db.ExecuteNonQuery(dbTran,"AddMeeting", -1, Subject,Sponsor,MeetingRoom,Date,StartTime,EndTime,
Manager,Actor,Agenda,IsApproved,IsPublished);

string[] attValue = strAtt.Split(';');
int rowsCount=0;
for (int i = 0; i < attValue.Length; i++)
{
//构造附件数据
string[] att = attValue[i].Split(',');
string FileName = att[0];
string FileExt = att[1];
string FilePath = att[2].Replace("/", "\\");
string Note = att[3];
//附加用途1表示会议资料类型
int Usage = 1;
long FileSize = Convert.ToInt64(att[4]);
DateTime UpTime = Convert.ToDateTime(att[5]);
//在增加附件
rowsCount = db.ExecuteNonQuery(dbTran, "AddAttachment", -1, RecID, FileName, FileExt, FilePath, Note, Usage, FileSize, UpTime);
}
dbTran.Commit();
}
catch (Exception ex)
{
dbTran.Rollback();
}
finally
{
dbCon.Close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: