黑马程序员技术交流社区
标题:
对表数据删除事务回滚
[打印本页]
作者:
黑马-杨鹏立
时间:
2013-3-2 17:23
标题:
对表数据删除事务回滚
本帖最后由 黑马-杨鹏立 于 2013-3-2 17:30 编辑
分享下对表数据删除事务回滚,在做两表删除的时候总担心删不完导致数据混乱,想到了事务回滚就把他写下来和大家一起分享。。。。希望得到大家帮助帮忙增加我的逻辑思维。。。。
#region 对表数据删除事务回滚
/// <summary>
/// 对表数据删除事务回滚
/// </summary>
/// <param name="id">待传入表1,2的通用编号</param>
/// <param name="tableName1">待传入表1</param>
/// <param name="tableName2">待传入表2</param>
/// <returns></returns>
public bool DelRollBack(int id, string tableName1, string tableName2)
{
OpenDB();
SqlTransaction sqlTran = Conn.BeginTransaction();//开始事务
SqlCommand cmd = new SqlCommand();
cmd.Connection = Conn;//获取数据连接
cmd.Transaction = sqlTran;//在执行sql语句时等待提交和rollback
try
{
string sqlStr1 = "delete " + tableName1 + " where FTCPParentId=" + id + "";
cmd.CommandText = sqlStr1;
cmd.ExecuteNonQuery();
string sqlStr2 = "delete " + tableName2 + " where FCaseChildId=" + id + "";
cmd.CommandText = sqlStr2;
cmd.ExecuteNonQuery();
sqlTran.Commit();
CloseDB();
return true;
}
catch
{
sqlTran.Rollback();
CloseDB();
return false;
}
}
#endregion
作者:
许庭洲
时间:
2013-3-2 18:59
值得学习ing!
作者:
康晓璞
时间:
2013-3-2 19:20
本帖最后由 康晓璞 于 2013-3-2 19:30 编辑
public static void SqlNumTransExcute(ArrayList SQLArrayList)
{
using (SqlConnection Con = new SqlConnection(ConnString))//建立连接对象
{
SqlCommand Com = new SqlCommand();//实例化Command对象
Com.Connection = Con;//Com对象连接到conn
if (Con.State == ConnectionState.Closed)//打开数据库连接
{
Con.Open();
}
SqlTransaction TranS = Con.BeginTransaction();//在执行sql语句时等待提交和rollback
Com.Transaction = TranS;
try
{
for (int i = 0; i < SQLArrayList.Count; i++)//执行多条Sql语句
{
string StrSQL = SQLArrayList
.ToString();
if (StrSQL.Length > 2)
{
Com.CommandText = StrSQL;
Com.ExecuteNonQuery();
}
}
TranS.Commit();//执行这个事务的操作
}
catch
{
TranS.Rollback();//如果失败,执行事务的回滚
throw new Exception("操作失败,数据已回滚!");
}
finally
{
if (Con.State == ConnectionState.Open)
{
Con.Close();
}
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2