请问:C# 在做项目中,如何处理 对数据库操作的事务回滚
在逻辑层,定义一个方法logicFaction()在数据库处理的Dao层,定义两个方法,分别是对数据库表table1和table2的插入操作addTable1(),add...
在逻辑层,定义一个方法logicFaction()
在数据库处理的Dao层 ,定义两个方法,分别是对数据库表table1和table2的插入操作
addTable1(),addTable()
logicFaction()调用上面两个方法,如果addTable1()方法插入成功,但addTable2()插入失败,怎么回滚到原始状态
各位大神,如果能给解决问题,再加30分!!
求急!!!!!!!! 展开
在数据库处理的Dao层 ,定义两个方法,分别是对数据库表table1和table2的插入操作
addTable1(),addTable()
logicFaction()调用上面两个方法,如果addTable1()方法插入成功,但addTable2()插入失败,怎么回滚到原始状态
各位大神,如果能给解决问题,再加30分!!
求急!!!!!!!! 展开
5个回答
展开全部
其实回滚简单理解就是之前操作的反向操作,在addtable1中定义了插入方法,与之相反,回滚的话就是定义一种删除方法,把之前插入的数据删掉就好了。这个你应该可以做到的吧!
还有给你个忠告,以后做数据库操作的时候,最好先备份数据库,这是防止这种情况发生的最简便的方法。
另外,当你要对数据库进行相应的操作的时候,提前分析好回滚操作,特别是逻辑,回滚很容易因为逻辑关系似的数据库面目全非,因为对数据库的操作很多是在操作时候是1-〉2->3->4这样的逻辑,回滚的时候就要进行2->1->4->3这样的逻辑。
如果不行的话再给我留言
还有给你个忠告,以后做数据库操作的时候,最好先备份数据库,这是防止这种情况发生的最简便的方法。
另外,当你要对数据库进行相应的操作的时候,提前分析好回滚操作,特别是逻辑,回滚很容易因为逻辑关系似的数据库面目全非,因为对数据库的操作很多是在操作时候是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();
}
}
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保存全部变更。如果该方法调用失败,所有对此上下文的操作全部无效。
在AddTable1、AddTable2的参数列表中加入实体框架的上下文参数ctx。DAO对数据的操作都可通过ctx参数完成。当最后要提交时用ctx.savechanges保存全部变更。如果该方法调用失败,所有对此上下文的操作全部无效。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用数据库的“事件”试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你方法就是错误的,为什么要用两个方法啊?不能在一起写吗?不能用SQL里的事务吗?
发生错误就自动回滚啊!
发生错误就自动回滚啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询