Побудова програм з готових блоків, ADO.NET, ASP, статті




Доступ до даних є істотним компонентом більшості сучасних додатків. Незважаючи на те, що програмна модель ADO.NET стала істотно багатший, у порівнянні з «класичним» ADO, Програмісти як і раніше вирішують одні й ті ж завдання з проекту в проект. Пропонований блок Microsoft Data Access Application Block покликаний спростити деякі рутинні операції при роботі з Microsoft SQL Server і надає в розпорядження розробників набір повторно використовуваних компонентів, виконаних у вигляді додаткового простору імен, що підключається до додатка.


Частина 1. Microsoft Data Access Application Block



Доступ до даних є істотним компонентом більшості сучасних додатків. Незважаючи на те, що програмна модель ADO.NET стала істотно багатшими, в порівнянні з “класичним” ADO, Програмісти, як і раніше вирішують одні й ті ж завдання з проекту в проект. Пропонований блок Microsoft Data Access
Application Block
покликаний спростити деякі рутинні операції при роботі з Microsoft SQL Server і надає в розпорядження розробників набір повторно використовуваних компонентів, виконаних у вигляді додаткового простору імен, підключається до додатка. Використання Microsoft Data Access Application Block полегшує наступні завдання:



Наприклад, використовуючи Microsoft Data Access Application Block виклик збереженої процедури і генерація набору даних (DataSet) може бути проведена одним викликом:


Dim DS As DataSet = SqlHelper.ExecuteDataSet( _
ConnectionString, _
CommandType.StoredProcedure, _
"GetProductsByCategory", _
new SqlParameter("@CategoryID", CategoryID))

Microsoft Data Access Application Block складається з наступних основних елементів:



Клас SqlHelper містить статичні методи, що дозволяють виконувати різні типи запитів до бази даних Microsoft SQL Server – ExecuteNonQuery, ExecuteDataset, ExecuteReader, ExecuteScalar і ExecuteXmlReader. Клас SqlHelperParameterCache служить для кешування параметрів запитів і використовується методами Execute класу SqlHelper. Також методи класу SqlHelperParameterCache – CacheParameterSet, GetCachedParameterSet і GetSpParameterSet можуть використовуватися з коду програми для кешування наборів параметрів запитів.


Нижче ми розглянемо ряд прикладів, іллюстірующіх використання класів і методів, що входять до складу Microsoft Data Access Application Block.

Виконання команд з використанням класу SqlHelper


Як ми зазначили вище, клас SqlHelper містить п’ять статичних методів, використовуваних для виконання різних запитів:



Кожен з цих методів містить перевантажені методи, перераховані нижче.


Execute* (ByVal connection As SqlConnection, _
ByVal commandType As CommandType, _
ByVal CommandText As String)
Execute* (ByVal connection As SqlConnection, _
ByVal commandType As CommandType, _
ByVal commandText As String, _
ByVal ParamArray commandParameters() As SqlParameter)
Execute* (ByVal connection As SqlConnection, _
ByVal spName As String, _
ByVal ParamArray parameterValues() As Object)
Execute* (ByVal transaction As SqlTransaction, _
ByVal commandType As CommandType, _
ByVal commandText As String)
Execute* (ByVal transaction As SqlTransaction, _
ByVal commandType As CommandType, _
ByVal commandText As String, _
ByVal ParamArray commandParameters() As SqlParameter)
Execute* (ByVal transaction As SqlTransaction, _
ByVal spName As String, _
ByVal ParamArray parameterValues() As Object)

Крім цього, всі методи, крім ExecuteXmlReader мають перевантажені методи, дозволяють передавати інформацію про з’єднання через рядок з’єднання, а не об’єкт SqlConnection:


Execute* (ByVal connectionString As String, _
ByVal commandType As CommandType, _
ByVal commandText As String)
Execute* (ByVal connectionString As String, _
ByVal commandType As CommandType, _
ByVal commandText As String, _
ByVal ParamArray commandParameters() As SqlParameter)
Execute* (ByVal connectionString As String, _
ByVal spName As String, _
ByVal ParamArray parameterValues() As Object)

Для звернення до показаним вище методів класу SqlHelper потрібно вказівку складання Microsoft.ApplicationBlocks.Data:


Imports Microsoft.ApplicationBlocks.Data

Dim DS As DataSet = SqlHelper.ExecuteDataSet( _
"SERVER=(local);DATABASE=Northwind;INTEGRATED SECURITY=True;", _
CommandType.Text, "SELECT * FROM Productes")

Управління параметрами за допомогою класу SqlHelperParameterCache



Клас SqlHelperParameterCache містить три методи, що використовуються для управління параметрами запитів:


Кешування і витяг параметрів


За допомогою методу CacheParameterSet набір параметрів (об’єктів типу SqlParameter) може бути збережений в кеші, який реалізований на базі об’єкта HashTable. В якості ключа використовується об’єднання вмісту рядка з’єднання і тексту команди.

Для витягання параметрів з кеша використовується метод GetCachedParameterSet, який повертає масив об’єктів типу SqlParameter з ініціалізованих властивостями (ім’я, значення, тип даних, напрям і т.п.).

У наступному прикладі показано як зберегти параметри запиту в кеші і витягти їх використовуючи методи класу SqlHelperParameterCache.


Const ConnectionString As String = _
"SERVER=(local);DATABASE=Northwind;INTEGRATED SECURITY=True;"
Dim Query As String = _
"SELECT ProductName FROM Products WHERE Category=@Cat AND SupplierID=@Sup"
´ ‘Кешування параметрів
´
Dim ParamsToStore(1) As SqlParameter
ParamsToStore(0) = New SqlParameter("@Cat", SqlDbType.Int)
ParamsToStore(1) = New SqlParameter("@Sup", SqlDbType.Int)
SqlHelperParameterCache.CacheParameterSet(ConnectionString, Query, _
ParamsToStore)
´ ‘Витяг параметрів
´
Dim StoredParams(1) As SqlParameter
StoredParams = SqlHelperCache.GetCachedParameterSet(ConnectionString, Query)
StoredParams(0).Value = 2
StoredParams(1).Value = 3
´ ‘Використання параметрів у команді
´
Dim DS As DataSet
DS = SqlHelper.Executedataset(ConnectionString, CommandType.Text, Query, _
StoredParams)

Ізвленіе параметрів збережених процедур


Клас SqlHelperParameterCache також надає засоби для витягання масиву параметрів для зазначених процедур. Для цього служить метод GetSpParameterSet, який намагається отримати параметри для зазначеної збереженої процедури з кешу. Якщо параметри не кешованими, вони витягуються з допомогою внутрішнього використання класу SqlCommandBuilder і додаються в кеш для подальшого використання. У наступному прикладі показано як витягти параметри для збереженої процедури SalesByCategory в базі даних Northwind.


Const ConnectionString As String = _
"SERVER=(local);DATABASE=Northwind;INTEGRATED SECURITY=True;"
Dim SPName As String = "SalesByCategory"
Dim StoredParams(1) As SqlParameter
StoredParams = SqlHelperParameterCache.GetSpParameterSet(ConenctionString, _
SPName)
StoredParams(0).Value = "Beverages"
StoredParams(1).Value = "1997"
Dim DS As DataSet
DS = SqlHelper.ExecuteDataSer(ConnectionString, _
CommandType.StoredProcedure, SPName, StoredParams)

Завантаження і установка блоку Microsoft Data Access Application Block


Блок Microsoft Data Access Application Block можна завантажити в Web-сайту компанії Microsoft за адресою: download.microsoft.com/download/VisualStudioNET/daabref/RTM/NT5/EN-US/DataAccessApplicationBlock.msi


Після запуску інсталяційного пакета DataAccessApplicationBlock.msi в меню Programs з’явиться елемент Microsoft Application Blocks for. NET. Блок Microsoft Data Access Application Block знаходиться в підменю Data Access.

Після цього необхідно вибрати або проект на Visual Basic, або на C # для компіляції збірки Microsoft.ApplicationBlocks.Data.dll.

Системні вимоги


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*