asp.net事务处理 使用三层架构,如何做事务处理。 需要完整的例子。谢谢各位。行的话一定给分 。我是刚出道的菜鸟。大家多帮帮忙 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果可以的话 能把代码发给我是最好的了 这是我的Email:[email protected] 如果只是数据库级别的事务,只要在SqlHelper或者数据访问层相关的地方,加入SqlTransaction代码。 数据处理层方法 /// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">多条SQL语句</param> public static int ExecuteSqlTran(List<String> SQLStringList) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; SqlTransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { int count = 0; for (int n = 0; n < SQLStringList.Count; n++) { string strsql = SQLStringList[n]; if (strsql.Trim().Length > 1) { cmd.CommandText = strsql; count += cmd.ExecuteNonQuery(); } } tx.Commit(); return count; } catch { tx.Rollback(); return 0; } } } 会用三层的这段代码应该很熟了事务一般是一个动作,应该在BLL层吧数据操作就应该在DAL层了个人理解我也正在学习三层 BLL层,用try{using(System.Transaction.TrasactionScop ts=new TransactionScrope()){第一个类中的.Add()方法(,调用该类对应的接口-->数据库实现层);第二个类中的.Remove()方法(,调用该类对应的接口-->数据库实现层).....ts.Complete();return true;}}catch(Exception e){Log(e);//or throw(e);} 回5楼的我帖的代码是在数据处理层实现多条SQL语句以事务的方式执行你所指的我明白,是指业务上面的事务,就像一次插入多条数据用我帖的代码来实现的话,就是在业务处理层把要操作数据库的多条sql语句组合起来然后调用数据处理层执行事务的方法这方法可能不是很好,本人更支持用6楼大哥的方法 public void DoSqlTransactioin(string[] sqls) { SqlCommand comm = conn.CreateCommand(); SqlTransaction trans = conn.BeginTransaction(); comm.Transaction = trans; try { conn.Open(); foreach (string sql in sqls) { comm.CommandText = sql; comm.ExecuteNonQuery(); } trans.Commit(); } catch (Exception ex) { trans.Rollback(); } finally { conn.Close(); } } js传值到后台问题 asp.net无限递归分类问题,新手请教。。。 再问三层结构中,cache管理在哪层的问题 外包项目:有个Wap开发的小软件,有意思的看过来 请问多语言网站的实现问题:翻译的工作是在市场部同事那里进行的,如果用资源文件的方式做的话,那不是还要在他们电脑上装个VS2005? 孟大哥:唯一索引忽不忽略重复键有什么区别呢 怎样解决aspnet_wp.exe进程占内存的问题 急急急,毕设要用,,panel控件显示位置问题 请各位帮我看看这里为什么出错,谢谢 可以将字符串"int"转换为关键字int吗 求一好用的js过滤字符串的方法 updatepanel问题
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static int ExecuteSqlTran(List<String> SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
int count = 0;
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n];
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
count += cmd.ExecuteNonQuery();
}
}
tx.Commit();
return count;
}
catch
{
tx.Rollback();
return 0;
}
}
}
using(System.Transaction.TrasactionScop ts=new TransactionScrope())
{
第一个类中的.Add()方法(,调用该类对应的接口-->数据库实现层);第二个类中的.Remove()方法(,调用该类对应的接口-->数据库实现层)
.....
ts.Complete();
return true;}
}
catch(Exception e)
{
Log(e);//or throw(e);
}
我帖的代码是在数据处理层实现多条SQL语句以事务的方式执行
你所指的我明白,是指业务上面的事务,就像一次插入多条数据
用我帖的代码来实现的话,就是在业务处理层把要操作数据库的多条sql语句组合起来
然后调用数据处理层执行事务的方法这方法可能不是很好,本人更支持用6楼大哥的方法
{
SqlCommand comm = conn.CreateCommand();
SqlTransaction trans = conn.BeginTransaction(); comm.Transaction = trans;
try
{
conn.Open();
foreach (string sql in sqls)
{
comm.CommandText = sql;
comm.ExecuteNonQuery();
}
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
}
finally
{
conn.Close();
}
}