×
Traktatov.net » Обработка баз данных на Visual Basic.NET » Читать онлайн
Страница 221 из 229 Настройки

>  

>    

>

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

Обработка данных на промежуточном уровне

До сих пор презентационный уровень описывался как визуальное представление приложения для клиента, а промежуточный уровень — как связующее звено (plumbing) между клиентом и основной частью приложения. Теперь пришло время показать роль окончательного уровня n-уровневой технологии, т.е. уровень данных. Обычно уровень данных состоит из базы данных, которая может иметь традиционную реляционную структуру, формат XML или формат файла INI. Далее в примерах этой главы в качестве хранилища данных используется SQL Server 2000.

В листинге 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("
")

> End While

> dReader.Close()

> conn.Close ()

>End Sub

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