Побудова програм з готових блоків



Доступ до даних є істотним компонентом
більшості сучасних додатків. Незважаючи на те, що програмна модель
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 за адресою: http://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>

*

*