三层架构中事务处理
数据访问层:
/// <summary>
/// 执行所有无返回语句
/// </summary>
/// <param name="coms"></param>
/// <returns>true执行事务成功,false执行事务失败</returns>
public bool DoTran(SqlCommand[] coms)
{
string strSql = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection myConn = new SqlConnection(strSql);
myConn.Open();
SqlCommand myComm = new SqlCommand();
SqlTransaction myTran;
myTran = myConn.BeginTransaction();
myComm.Connection = myConn;
myComm.Transaction = myTran;
try
{
for (int i = 0; i < coms.Length; i++)
{
myComm.CommandText = coms[i].CommandText;
myComm.Parameters.Clear();
SqlParameter[] clonedParameters = new SqlParameter[coms[i].Parameters.Count];
for (int m = 0, n = coms[i].Parameters.Count; m < n; m++)
{
clonedParameters[m] = (SqlParameter)((ICloneable)coms[i].Parameters[m]).Clone();
}
if (clonedParameters != null)
{
foreach (SqlParameter parameter in clonedParameters)
{
myComm.Parameters.Add(parameter);
}
}
myComm.ExecuteNonQuery();
}
myTran.Commit();
myConn.Close();
return true;
}
catch
{
myTran.Rollback();
myConn.Close();
return false;
}
}