在线等—求这样一段事务回滚的代码 一个主表:table1,一个行表:table2现在要实现的是,当插入主表table1后会返回一个值,这个为插入后自动生成的一个主键,然后根据这个主键在插入行表table2.如果中间步骤断了,则删除主表table1中的数据。这个功能我是分为两个步骤实现的,所以没有实现回滚,请教一下前辈们,如果要控制它事务回滚怎么写代码? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 像你说的这种情况,最好使用存储过程,如果不使用存储过程的话,那就用一个回滚,回滚有一个 conn.BegionTr...和 conn.EndTr..的一个方法组。 如下为伪代码: connection.Open(); transaction = connection.BeginTransaction();try{ command = new Command(connection); command.CommandText = "插入表1的SQL"; id = command.Excute(); command.CommandText = "插入表2的SQL,关联id"; command.Excute() transaction.Commit();}catch{ transaction.Rollback();} 我没有用存储过程,用SQL语句实现。楼上的方法我先试试 可以考虑用触发器啊。哈哈但是一般不推荐用//执行事务处理public void DoTran(){ //建立连接并打开 SqlConnection myConn=GetConn(); myConn.Open(); SqlCommand myComm=new SqlCommand(); //SqlTransaction myTran=new SqlTransaction(); //注意,SqlTransaction类无公开的构造函数 SqlTransaction myTran; //创建一个事务 myTran=myConn.BeginTransaction(); try { //从此开始,基于该连接的数据操作都被认为是事务的一部分 //下面绑定连接和事务对象 myComm.Connection=myConn; myComm.Transaction=myTran; //定位到pubs数据库 myComm.CommandText="USE pubs"; myComm.ExecuteNonQuery();//操作1 myComm.CommandText=""; //操作2 myComm.ExecuteNonQuery(); //提交事务 myTran.Commit(); } catch(Exception err) { myTran.rollback(); throw new ApplicationException("事务操作出错,系统信息:"+err.Message); } finally { myConn.Close(); }} 1.c#代码中实现(最好封装起来传入string[] sqlArray)2.数据库使用数据库事务3.触发器(触发器尽量少用,如果数据迁移或者文档不详细会死的很惨) 背景的问题 求助:VS2010连接数据库时报错,求高手指点 treeview简单问题 如何在同一空间中,多种语言版本共存? 点击datagrid就选中所在行的实现 请问我在web.config中设置了超时时间,可是程序不按这个时间超时. 如何規範DateTime的格式 .net FastReport 如何在后台给页面添加图片 freetextbox 3.1.6 图片插入 大家来说说做完WEB项目以后,是如何发布的? asp .net显示textbox显示文本文件密码问题 WebService用于AJAX
connection.Open();
transaction = connection.BeginTransaction();
try
{
command = new Command(connection);
command.CommandText = "插入表1的SQL";
id = command.Excute();
command.CommandText = "插入表2的SQL,关联id";
command.Excute()
transaction.Commit();
}
catch
{
transaction.Rollback();
}
public void DoTran()
{ //建立连接并打开
SqlConnection myConn=GetConn();
myConn.Open();
SqlCommand myComm=new SqlCommand();
//SqlTransaction myTran=new SqlTransaction();
//注意,SqlTransaction类无公开的构造函数
SqlTransaction myTran;
//创建一个事务
myTran=myConn.BeginTransaction();
try
{
//从此开始,基于该连接的数据操作都被认为是事务的一部分
//下面绑定连接和事务对象
myComm.Connection=myConn;
myComm.Transaction=myTran; //定位到pubs数据库
myComm.CommandText="USE pubs";
myComm.ExecuteNonQuery();//操作1
myComm.CommandText=""; //操作2
myComm.ExecuteNonQuery();
//提交事务
myTran.Commit();
}
catch(Exception err)
{
myTran.rollback();
throw new ApplicationException("事务操作出错,系统信息:"+err.Message);
}
finally
{
myConn.Close();
}
}
2.数据库使用数据库事务
3.触发器(触发器尽量少用,如果数据迁移或者文档不详细会死的很惨)