1,SqlServer存储过程的事务处理 一种比较通用的出错处理的模式大概如下: Create procdure prInsertProducts ( ?@intProductId int, ?@chvProductName varchar(30), ?@intProductCount int ) AS Declare @intErrorCode int Select @intErrorCode=@@Error Begin transaction ?if @intErrorCode=0 ?? begin ???? -insert products ???? insert products(ProductID,ProductName,ProductCount)? ???? values(@intProductId,@chvProductName,@intProductCount) ???? Select @intErrorCode=@@Error --每执行完一条t-sql语句马上进行检测,并把错误号保存到局部变量中 ?? end ?if @intErrorCode=0 ?? begin? ???? -update products ???? update products set ProductName='MicroComputer' where ProductID=5 ???? Select @intErrorCode=@@Error ?? end if @intErrorCode=0 ?? commit transaction else ?? rollback transaction
?Return @intErrorCode --最好返回错误代号给调用的存储过程或应用程序
2,.Net中使用事务处理 SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");? myConnection.Open();
SqlTransaction myTrans = myConnection.BeginTransaction(); //使用New新生成一个事务? SqlCommand myCommand = new SqlCommand();? myCommand.Transaction = myTrans;
try? {? myCommand.CommandText = "Update Address set location='23 rain street' where userid='0001'";? myCommand.ExecuteNonQuery();? myTrans.Commit();? Console.WriteLine("Record is udated.");? }? catch(Exception e)? {? myTrans.Rollback();? Console.WriteLine(e.ToString());? Console.WriteLine("Sorry,Record can not be updated.");? }? finally? {? myConnection.Close();? }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|