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) s(@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();
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(); }