在dal层的方法中加上IDbTransaction 参数可行吗 rt就是为了在bll层可以控制事务,这样有什么不方便的吗,我问了好几个朋友都是这样做的,不过个人觉得有点繁琐,因为我需不需要事务都一定要传事务参数, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请问ls,你在bll层调用事务处理是怎么弄的啊,或者根本在bll层就没有事务,全部放到dal层做掉了 你可以重载方法啊例如:我只是提供思路,方法里面的代码可能并不适合你,你可以根据自己的情况,修改一下/// <summary> /// 返回数据访问方法是否执行成功,返回bool值,适用于:增删改,不用于查询! /// </summary> /// <param name="sql">sql语句</param> /// <param name="cmdType">sql语句类型</param> /// <param name="connString">数据库连接字符串,这个参数是为多个数据库而设计</param> /// <param name="parameters">参数列表</param> /// <returns></returns> public static bool ExecuteNonQuery(string sql, CommandType cmdType, string connString, params DbParameter[] parameters) { DbConnection conn = DbFactory.CreateConnection(); conn.ConnectionString = connString; DbCommand cmd = DbFactory.CreateCommand(); cmd.CommandText = sql; cmd.Connection = conn; cmd.CommandType = cmdType; AddParams(parameters, cmd); try { Open(conn); int returnCount = 0; returnCount = cmd.ExecuteNonQuery(); if (returnCount > 0) return true; return false; } catch (Exception e) { throw e; } finally { Close(conn); cmd.Dispose(); cmd.Parameters.Clear(); } } /// <summary> /// 返回数据访问方法是否执行成功,返回bool值,适用于:增删改,不用于查询! /// </summary> /// <param name="sql">sql语句</param> /// <param name="cmdType">sql语句类型</param> /// <param name="transaction">sql事务</param> /// <param name="connString">数据库连接字符串,这个参数是为多个数据库而设计</param> /// <param name="parameters">参数列表</param> /// <returns></returns> public static bool ExecuteNonQuery(string sql, CommandType cmdType, DbTransaction transaction, string connString, params DbParameter[] parameters) { DbConnection conn = DbFactory.CreateConnection(); conn.ConnectionString = connString; DbCommand cmd = DbFactory.CreateCommand(); cmd.CommandText = sql; cmd.Connection = conn; cmd.CommandType = cmdType; AddParams(parameters, cmd); try { Open(conn); transaction = conn.BeginTransaction(); cmd.Transaction = transaction; int returnCount = 0; returnCount = cmd.ExecuteNonQuery(); transaction.Commit(); if (returnCount > 0) return true; return false; } catch (Exception e) { transaction.Rollback(); throw e; } finally { Close(conn); cmd.Dispose(); cmd.Parameters.Clear(); } } 接触到别人的网站源码,从哪里看起效率一点呢? Fckeditor做新闻发布问题 2.0 AJAX 求一刷新页面的代码(C#) 日期类型如何比较? 做过ERP或WEB开发的可以过来试试,可兼职,有报酬。 关于HTML的<table></table>中<td></td>的绝对宽度设置。。。。。。。。。。。。。。 保存图片文件的示例代码 关于软件下载页面的问题,很实用的话题 我用TreeView为什么总出错? 请教如何固定查询出来结果的表头 求一正则表达式 关于回车触发按钮点击的问题,请帮忙!
例如:我只是提供思路,方法里面的代码可能并不适合你,你可以根据自己的情况,修改一下/// <summary>
/// 返回数据访问方法是否执行成功,返回bool值,适用于:增删改,不用于查询!
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="cmdType">sql语句类型</param>
/// <param name="connString">数据库连接字符串,这个参数是为多个数据库而设计</param>
/// <param name="parameters">参数列表</param>
/// <returns></returns>
public static bool ExecuteNonQuery(string sql, CommandType cmdType, string connString, params DbParameter[] parameters)
{
DbConnection conn = DbFactory.CreateConnection();
conn.ConnectionString = connString;
DbCommand cmd = DbFactory.CreateCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
cmd.CommandType = cmdType;
AddParams(parameters, cmd);
try
{
Open(conn);
int returnCount = 0;
returnCount = cmd.ExecuteNonQuery();
if (returnCount > 0)
return true;
return false;
}
catch (Exception e)
{
throw e;
}
finally
{
Close(conn);
cmd.Dispose();
cmd.Parameters.Clear();
}
}
/// <summary>
/// 返回数据访问方法是否执行成功,返回bool值,适用于:增删改,不用于查询!
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="cmdType">sql语句类型</param>
/// <param name="transaction">sql事务</param>
/// <param name="connString">数据库连接字符串,这个参数是为多个数据库而设计</param>
/// <param name="parameters">参数列表</param>
/// <returns></returns>
public static bool ExecuteNonQuery(string sql, CommandType cmdType, DbTransaction transaction, string connString, params DbParameter[] parameters)
{
DbConnection conn = DbFactory.CreateConnection();
conn.ConnectionString = connString;
DbCommand cmd = DbFactory.CreateCommand();
cmd.CommandText = sql;
cmd.Connection = conn;
cmd.CommandType = cmdType;
AddParams(parameters, cmd);
try
{
Open(conn);
transaction = conn.BeginTransaction();
cmd.Transaction = transaction;
int returnCount = 0;
returnCount = cmd.ExecuteNonQuery();
transaction.Commit();
if (returnCount > 0)
return true;
return false;
}
catch (Exception e)
{
transaction.Rollback();
throw e;
}
finally
{
Close(conn);
cmd.Dispose();
cmd.Parameters.Clear();
}
}