其实回滚简单理解就是之前操作的反向操作,在addtable1中定义了插入方法,与之相反,回滚的话就是定义一种删除方法,把之前插入的数据删掉就好了。这个你应该可以做到的吧!
还有给你个忠告,以后做数据库操作的时候,最好先备份数据库,这是防止这种情况发生的最简便的方法。
另外,当你要对数据库进行相应的操作的时候,提前分析好回滚操作,特别是逻辑,回滚很容易因为逻辑关系似的数据库面目全非,因为对数据库的操作很多是在操作时候是1-〉2->3->4这样的逻辑,回滚的时候就要进行2->1->4->3这样的逻辑。
如果不行的话再给我留言
将下面的代码稍微变一下,就可以用了。
using System.Data.SqlClient; //引用
private void test() {
string sqlcn = "";
using (SqlConnection conn = new SqlConnection(sqlcn))
{
conn.Open();
SqlTransaction trans = conn.BeginTransaction(); //创建事务
try {
string strSql1 = "";
SqlCommand cmd1 = new SqlCommand(strSql1);
cmd1.ExecuteNonQuery();
string strSql2 = "";
SqlCommand cmd2 = new SqlCommand(strSql2);
cmd2.ExecuteNonQuery();
trans.Commit(); //提交事务
Console.WriteLine("成功");
}
catch(Exception ex){
trans.Rollback(); //回滚事务
Console.WriteLine("失败。 " & ex.Message.ToString());
}
Console.ReadKey();
}
}
可用实体框架。
在AddTable1、AddTable2的参数列表中加入实体框架的上下文参数ctx。DAO对数据的操作都可通过ctx参数完成。当最后要提交时用ctx.savechanges保存全部变更。如果该方法调用失败,所有对此上下文的操作全部无效。
用数据库的“事件”试试。
你方法就是错误的,为什么要用两个方法啊?不能在一起写吗?不能用SQL里的事务吗?
发生错误就自动回滚啊!