Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
[ Team LiB ] Recip 6.4 Using ADO.NET and SQL Server DBMS Transactions Together Problem You need to use a DBMS transaction within a SQL Server stored procedure from an ADO.NET transaction with the SQL Server .NET data provider. | Team LiB Recipe 6.4 Using ADO.NET and SQL Server DBMS Transactions Together Problem You need to use a DBMS transaction within a SQL Server stored procedure from an ADO.NET transaction with the SQL Server .NET data provider. Solution Use error-checking within a catch block as shown in Example 6-5. The sample uses a single stored procedure InsertCategories_Transacted Used to insert a single record into the Categories table in the Northwind database within a DBMS transaction. If the record insert fails the transaction is rolled back otherwise the transaction is committed. The sample code contains two event handlers Form.Load Sets up the sample by filling a DataTable with the Categories table from the Northwind sample database. The default view of the table is bound to a data grid on the form. Insert Button.Click Inserts user-entered data for the Categories records into the Northwind database within a manual transaction using a DBMS transacted stored procedure. The transaction is rolled back in the stored procedure if either the Force DBMS Rollback checkbox is checked or if no value is entered for the Category Name field. Otherwise the ADO.NET manual transaction is committed. Example 6-5. Stored procedure InsertCategories_Transacted CREATE PROCEDURE InsertCategories_Transacted @CategoryId int output @CategoryName nvarchar 15 @Description ntext @Rollback bit 0 AS SET NOCOUNT ON begin tran insert Categories CategoryName Description values @CategoryName @Description if @@error 0 or @@rowcount 0 or @Rollback 1 begin rollback tran set @CategoryID -1 return 1 end commit tran set @CategoryID Scope_Identity select @CategoryID Categoryld return 0 The C code is shown in Example 6-6. Example 6-6. File DbmsTransactionForm.es Namespaces variables and constants using System using System.Configuration using System.Windows.Forms using System.Data using System.Data.SqlClient private SqlDataAdapter da private DataTable dt . . . private void DbmsTransactionForm_Load object sender .