DAAB(Data Access Application Block) in Enterprise Library 2.0 - (6회)
DAAB(Data Access Application Block) in Enterprise Library 2.0 - (6회) |
| ||||||||||||||||||
[DataSet을사용하여DB업데이트하기(UpdateDataSet사용)] [DAAB의UpdateDataSet메서드를사용하여DataSet에변경된내용을DB에반영시키는내용을아래예제에서설명하고있다. 아래예제를실행하기위해서는해당Stored Procedure가만들어져있어야한다. CREATE PROCEDURE AddProduct ( @ProductName nvarchar(50), @CategoryID int, @UnitPrice money ) AS INSERT INTO Products (ProductName, CategoryID, UnitPrice) VALUES (@ProductName, @CategoryID, @UnitPrice) SELECT ProductID, ProductName, CategoryID, UnitPrice FROM Products WHERE ProductID = SCOPE_IDENTITY() GO CREATE PROCEDURE DeleteProduct ( @ProductID int ) AS DELETE Products WHERE ProductID = @ProductID GO CREATE PROCEDURE UpdateProduct ( @ProductID int, @ProductName nvarchar(50), @LastUpdate datetime ) AS UPDATE Products SET ProductName = @ProductName WHERE ProductID = @ProductID AND LastUpdate = @LastUpdate IF @@ROWCOUNT > 0 -- This statement is used to update the DataSet if changes are done on the updated record (identities, timestamps or triggers ) SELECT ProductID, ProductName, CategoryID, UnitPrice FROM Products WHERE ProductID = @ProductID GO 사용 예제1 - C#) Database db = DatabaseFactory.CreateDatabase(); DataSet productsDataSet = new DataSet(); string sqlCommand = "Select Select ProductID, ProductName, CategoryID, UnitPrice, LastUpdate From Products"; DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand); string productsTable = "Products"; // Retrieve the initial data. db.LoadDataSet(dbCommand, productsDataSet, productsTable); // Get the table that will be modified. DataTable table = productsDataSet.Tables[productsTable]; // Add a new product to existing DataSet. DataRow addedRow = table.Rows.Add(new object[] {DBNull.Value, "New product", 11, 25}); // Modify an existing product. table.Rows[0]["ProductName"] = "Modified product"; // Establish the Insert, Delete, and Update commands. DbCommand insertCommand = db.GetStoredProcCommand("AddProduct"); db.AddInParameter(insertCommand, "ProductName", DbType.String, "ProductName", DataRowVersion.Current); db.AddInParameter(insertCommand, "CategoryID", DbType.Int32, "CategoryID", DataRowVersion.Current); db.AddInParameter(insertCommand, "UnitPrice", DbType.Currency, "UnitPrice", DataRowVersion.Current); DbCommand deleteCommand = db.GetStoredProcCommand("DeleteProduct"); db.AddInParameter(deleteCommand , "ProductID", DbType.Int32, "ProductID", DataRowVersion.Current); DbCommand updateCommand = db.GetStoredProcCommand("UpdateProduct"); db.AddInParameter(updateCommand, "ProductID", DbType.Int32, "ProductID", DataRowVersion.Current); db.AddInParameter(updateCommand, "ProductName", DbType.String, "ProductName", DataRowVersion.Current); db.AddInParameter(updateCommand, "LastUpdate", DbType.DateTime, "LastUpdate", DataRowVersion.Current); // Submit the DataSet, capturing the number of rows that were affected. int rowsAffected = db.UpdateDataSet(productsDataSet, "Products", insertCommand, updateCommand, deleteCommand, Microsoft.Practices.EnterpriseLibrary.Data.UpdateBehavior.Standard); UpdateDataSet메서드는업데이트작업중에러가발생하였을경우어떤식으로처리하는지를지정할수있다. UpdateBehavior를통해설정할수있는UpdateBehavior.Standard는에러발생시롤백도하지않고더이상업데이트도수행하지않고그상황에서멈춘다. UpdateBehavior.Continue는나머지업데이트를하려고시도한다. UpdateBehavior.Transactional은에러가발생했을경우전체를롤백시킨다.]
[아래와같이구성정보파일내의configSections에지정한섹션(아래예에서는instrumentationConfiguration섹션)에퍼포먼스카운터,이벤트로깅, WMI등의Instrumenting을Enable/Disable할수있다. <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="instrumentationConfiguration"type="Microsoft.Practices.EnterpriseLibrary.Common.Instrumentation.Configuration.InstrumentationConfigurationSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" /> </configSections> <instrumentationConfigurationperformanceCountersEnabled="true"eventLoggingEnabled="true"wmiEnabled="true" /> </configuration> Instrumenting에대한자세한내용은Enterprise Library도움말내DAAB부분을참고하기바란다. (ms-help://MS.VSCC.v80/MS.VSIPCC.v80/ms.EntLib.2006Jan/EnterpriseLibrary/html/03-05-030-Instrumenting%20the%20Data%20Access%20Application%20Block.htm) ] |