//建立连接并打开
SqlConnection myConn = GetConn();
myConn.Open(); SqlCommand myComm = new SqlCommand();
SqlTransaction myTran; //创建一个事务
myTran = myConn.BeginTransaction();
//下面绑定连接和事务对象
myComm.Connection = myConn;
myComm.Transaction = myTran; try
{
//定位到Test数据库
myComm.CommandText = "USE pubs";
myComm.ExecuteNonQuery(); myComm.CommandText = "UPDATE dbo.discounts SET lowqty = lowqty * 3.0";
myComm.ExecuteNonQuery();
//下面使用创建数据库的语句制造一个错误
myComm.CommandText = "Create database testdb";
myComm.ExecuteNonQuery(); myComm.CommandText = "UPDATE dbo.discounts SET lowqty = lowqty * 1.0";
myComm.ExecuteNonQuery(); //提交事务
myTran.Commit();
MessageBox.Show("成功");
}
catch (Exception err)
{
myTran.Rollback();
MessageBox.Show("事务操作出错,已回滚。系统信息:" + "\n" + err.Message);
//Console.Write("事务操作出错,已回滚。系统信息:" + err.Message);
}
finally
{
myConn.Close();
myTran.Dispose();
myComm.Dispose();
}
myTran.Rollback();我写不写这句话,数据库中的表dbo.discounts 都不会被修改,那myTran.Rollback();还有什么用~
或者是我写的有问题?
SqlConnection myConn = GetConn();
myConn.Open(); SqlCommand myComm = new SqlCommand();
SqlTransaction myTran; //创建一个事务
myTran = myConn.BeginTransaction();
//下面绑定连接和事务对象
myComm.Connection = myConn;
myComm.Transaction = myTran; try
{
//定位到Test数据库
myComm.CommandText = "USE pubs";
myComm.ExecuteNonQuery(); myComm.CommandText = "UPDATE dbo.discounts SET lowqty = lowqty * 3.0";
myComm.ExecuteNonQuery();
//下面使用创建数据库的语句制造一个错误
myComm.CommandText = "Create database testdb";
myComm.ExecuteNonQuery(); myComm.CommandText = "UPDATE dbo.discounts SET lowqty = lowqty * 1.0";
myComm.ExecuteNonQuery(); //提交事务
myTran.Commit();
MessageBox.Show("成功");
}
catch (Exception err)
{
myTran.Rollback();
MessageBox.Show("事务操作出错,已回滚。系统信息:" + "\n" + err.Message);
//Console.Write("事务操作出错,已回滚。系统信息:" + err.Message);
}
finally
{
myConn.Close();
myTran.Dispose();
myComm.Dispose();
}
myTran.Rollback();我写不写这句话,数据库中的表dbo.discounts 都不会被修改,那myTran.Rollback();还有什么用~
或者是我写的有问题?
看你写的是数据连接及命令执行的,网上这样的例子很多,楼主可以参照其它人的写法