Чтение онлайн

на главную - закладки

Жанры

Обработка баз данных на Visual Basic®.NET

Прайс Кевин Т.

Шрифт:

В листинге 11.1 из главы 11, "Web-формы: приложения на основе ASP.NET для работы с базами данных", показан простой пример использования промежуточного уровня для подключения к базе данных, выполнения запроса и возвращения объекта в виде HTML-таблицы. Этот код никак не влияет на возвращаемые данные, а только отображает их. На самом деле запрос выполняется в базе данных. В листинге 12.4 повторяется код подпрограммы ShowCustomers из листинга 11.5, который в следующем примере используется в другом контексте.

ЛИСТИНГ 12.4. Код подпрограммы ShowCustomers

Private Sub ShowCustomers

 '
Это простой пример использования функции,

 ' которая извлекает данные из таблицы tblCustomer

 ' и отображает их.

 ' Инициализация объекта подключения строкой

 ' подключения.

 Dim conn As New SqlConnection (connString)

 ' Затем инициализация объекта-команды

 ' строкой выполняемой команды SQL.

 Dim cmd As New SqlCommand("exec sp_GetCustomersOrders", conn)

 conn.Open

 Dim dReader As SqlDataReader = _

cmd.ExecuteReader(CommandBehavior.CloseConnection)

 While dReader.Read

Response.Write(dReader.GetString(0))

Response.Write(" " & dReader.GetString(1))

Response.Write(" "& dReader.GetDateTime(2))

Response.Write("<BR>")

 End While

 dReader.Close

 conn.Close

End Sub

Обратите внимание на использование хранимой процедуры sp_GetCustomeOrders, которая является типичным примером размещения прикладной логики на уровне данных приложения. Это сделано просто потому, что кратчайшее расстояние между двумя точками определяется прямой линией. Код, расположенный на сервере баз данных, компилируется для наиболее эффективного выполнения сервером. Поэтому в результате хранимая процедура, которая располагается на уровне данных, будет выполнена быстрее, чем хранимая процедура, которая располагается на промежуточном уровне.

Однако, к сожалению, хранимые процедуры можно использовать далеко не во всех ситуациях. Это ограничение наводит на мысль воспользоваться еще одним простым принципом определения кратчайшего пути как пути наименьшего сопротивления. В приведенном примере наименьшее сопротивление означает, что следующий уровень над уровнем данных используется для выполнения прикладной логики. Рассмотрим, как в многоуровневом приложении, где клиентский уровень используется только для отображения данных, можно реализовать остальные уровни.

Создание повторно используемых компонентов промежуточного уровня

В этом разделе описано создание простого запроса в виде повторно используемого объекта. Основная цель

данного примера — продемонстрировать способ создания функции в одном месте и использования ее сразу в нескольких приложениях. Создайте новый или откройте уже имеющийся проект Visual Basic .NET. Щелкните правой кнопкой мыши на имени проекта в окне Solution Explorer и выберите в контекстном меню команду Add→Add Component. В диалоговом окне Add New Item в текстовом поле Name введите имя нового компонента GetRowCount.vb.

НА ЗАМЕТКУ

Коды всех примеров в этой и предыдущей главах основаны на решении Novelty1. Пространство имен Novelty1 используется в остальных примерах данной главы.

После создания пустого компонента нужно включить в него код функции GetRowCount, которая возвращает целочисленное значение с количеством записей в таблице tblCustomers базы данных Novelty. В листинге 12.5 приведен полный код этого компонента.

ЛИСТИНГ 12.5. Код компонента GetRowCount.vb

Imports System.Data

Imports System.Data.SqlClient

Public Class GetRowCount

 Inherits System.ComponentModel.Component

 Public Function GetRowCount As Integer

Try

Dim connString As String

' Помните обсуждение в главе 11 функции

' String.Intern? Если в памяти уже есть строка

' с тем же значением, то вместо создания нового

' экземпляра будет использована ссылка на нее.

connString = _

"server=(local);database=Novelty;TRUSTED_CONNECTION=Yes"

Dim conn As New SqlConnection(connString)

Dim cmd As New SqlCommand("select count(*) from tblCustomer", conn)

conn.Open Dim dReader As SqlDataReader = _

cmd.ExecuteReader(CommandBehavior.CloseConnection)

While dReader.Read

' Включить первую и единственную запись

' в результирующий набор.

GetRowCount = dReader.GetValue(0)

End While

dReader.Close

conn.Close

Catch

System.Console.WriteLine("An error has occurred " & Err.Description)

End Try

 End Function

#Region " Component Designer generated code "

Поделиться:
Популярные книги

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Привет из Загса. Милый, ты не потерял кольцо?

Лисавчук Елена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Имя нам Легион. Том 3

Дорничев Дмитрий
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 3

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

У врага за пазухой

Коваленко Марья Сергеевна
5. Оголенные чувства
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
У врага за пазухой

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит