在Net程序中,一旦发生错误,如何实现事务的长尾词回滚操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计355个文字,预计阅读时间需要2分钟。
如果存在大量数据插入的情况,使用事务控制程序的逻辑比较实用,成功则全部插入,失败则回滚到特定点。代码示例:
csharpprotected void Button1_Click(object sender, EventArgs e){ try { using (var transaction=connection.BeginTransaction()) { foreach (var data in dataList) { // 插入数据逻辑 // ... } transaction.Commit(); } } catch (Exception ex) { using (var transaction=connection.BeginTransaction(IsolationLevel.ReadCommitted)) { // 回滚到特定点 // ... transaction.Rollback(); } }}
如果存在多条数据插入的情况下,使用事务控制程序的逻辑比较实用的,成功则全部插入,失败一条则回滚到特定点;
代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text!="")
{
SqlConnection sc= help.con();
sc.Open();
// string str = "insert into cs(Fcate) values('"+this.TextBox1.Text.Trim()+"')";
SqlTransaction tr= sc.BeginTransaction();//定义事务
SqlCommand cmd = new SqlCommand("cs_Insert", sc);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Transaction = tr;//设置事务
cmd.Parameters.Add(new SqlParameter("@fcate", SqlDbType.VarChar,128)).Value=this.TextBox1.Text.Trim();
try
{
cmd.ExecuteNonQuery();
//先执行某个事,执行完有错误后会被catch捕捉,执行回滚,否则会提交事务;
tr.Commit();
sc.Close();
this.Bind();
}
catch
{
Response.Write("<script>alert('执行事务回滚')</script>");
tr.Rollback();//回滚事务
}
}
}
截图:
本文共计355个文字,预计阅读时间需要2分钟。
如果存在大量数据插入的情况,使用事务控制程序的逻辑比较实用,成功则全部插入,失败则回滚到特定点。代码示例:
csharpprotected void Button1_Click(object sender, EventArgs e){ try { using (var transaction=connection.BeginTransaction()) { foreach (var data in dataList) { // 插入数据逻辑 // ... } transaction.Commit(); } } catch (Exception ex) { using (var transaction=connection.BeginTransaction(IsolationLevel.ReadCommitted)) { // 回滚到特定点 // ... transaction.Rollback(); } }}
如果存在多条数据插入的情况下,使用事务控制程序的逻辑比较实用的,成功则全部插入,失败一条则回滚到特定点;
代码如下:
protected void Button1_Click(object sender, EventArgs e)
{
if (this.TextBox1.Text!="")
{
SqlConnection sc= help.con();
sc.Open();
// string str = "insert into cs(Fcate) values('"+this.TextBox1.Text.Trim()+"')";
SqlTransaction tr= sc.BeginTransaction();//定义事务
SqlCommand cmd = new SqlCommand("cs_Insert", sc);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Transaction = tr;//设置事务
cmd.Parameters.Add(new SqlParameter("@fcate", SqlDbType.VarChar,128)).Value=this.TextBox1.Text.Trim();
try
{
cmd.ExecuteNonQuery();
//先执行某个事,执行完有错误后会被catch捕捉,执行回滚,否则会提交事务;
tr.Commit();
sc.Close();
this.Bind();
}
catch
{
Response.Write("<script>alert('执行事务回滚')</script>");
tr.Rollback();//回滚事务
}
}
}

