请问:C# 在做项目中,如何处理 对数据库操作的事务回滚

在逻辑层,定义一个方法logicFaction()在数据库处理的Dao层,定义两个方法,分别是对数据库表table1和table2的插入操作addTable1(),add... 在逻辑层,定义一个方法logicFaction()
在数据库处理的Dao层 ,定义两个方法,分别是对数据库表table1和table2的插入操作
addTable1(),addTable()
logicFaction()调用上面两个方法,如果addTable1()方法插入成功,但addTable2()插入失败,怎么回滚到原始状态

各位大神,如果能给解决问题,再加30分!!
求急!!!!!!!!
展开
 我来答
古稀未见是鸡丁4
2012-01-17 · 超过15用户采纳过TA的回答
知道答主
回答量:62
采纳率:100%
帮助的人:38.8万
展开全部
其实回滚简单理解就是之前操作的反向操作,在addtable1中定义了插入方法,与之相反,回滚的话就是定义一种删除方法,把之前插入的数据删掉就好了。这个你应该可以做到的吧!
还有给你个忠告,以后做数据库操作的时候,最好先备份数据库,这是防止这种情况发生的最简便的方法。
另外,当你要对数据库进行相应的操作的时候,提前分析好回滚操作,特别是逻辑,回滚很容易因为逻辑关系似的数据库面目全非,因为对数据库的操作很多是在操作时候是1-〉2->3->4这样的逻辑,回滚的时候就要进行2->1->4->3这样的逻辑。
如果不行的话再给我留言
Emma_H
推荐于2018-05-06 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:106万
展开全部
将下面的代码稍微变一下,就可以用了。

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();
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
旁笑槐NH
2012-01-17 · TA获得超过2545个赞
知道大有可为答主
回答量:2686
采纳率:0%
帮助的人:2866万
展开全部
可用实体框架。
在AddTable1、AddTable2的参数列表中加入实体框架的上下文参数ctx。DAO对数据的操作都可通过ctx参数完成。当最后要提交时用ctx.savechanges保存全部变更。如果该方法调用失败,所有对此上下文的操作全部无效。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lionson0819
2012-01-17 · TA获得超过1233个赞
知道小有建树答主
回答量:1041
采纳率:0%
帮助的人:643万
展开全部
用数据库的“事件”试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ztq613
2012-01-19 · 超过18用户采纳过TA的回答
知道答主
回答量:119
采纳率:0%
帮助的人:63.8万
展开全部
你方法就是错误的,为什么要用两个方法啊?不能在一起写吗?不能用SQL里的事务吗?
发生错误就自动回滚啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式