C#通过ADO.NET开启事务查询
在自己的数据库操作类定义一个方法
/// <summary>
/// 使用事务进行数据库操作
/// </summary>
/// <param name="sql">查询字符串</param>
/// <param name="parameters">参数键值对</param>
/// <returns>返回受影响的行数</returns>
public static int CommandWithTransition(string sql, SqlParameter[] parameters)
{
SqlConnection cnn = OpenConnection(); //打开连接
SqlTransaction tranc = cnn.BeginTransaction(); ; //开启事务
try
{
SqlCommand cmd = new SqlCommand(sql, cnn);
cmd.Parameters.AddRange(parameters);
cmd.Transaction = tranc;
int result = cmd.ExecuteNonQuery();
tranc.Commit(); //接受事务
return result;
}
catch (Exception ex)
{
tranc.Rollback(); //发生异常时回滚
tranc.Dispose();
throw ex; //把异常抛出
}
finally
{
cnn.Close();
}
}
这个方法在操作发生异常的时回滚事务,数据回滚到未操作的状态,并把错误重新抛出。