Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET
- Название:Обработка баз данных на Visual Basic®.NET
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2003
- Город:Москва
- ISBN:5-8459-0512-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET краткое содержание
Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000. Затем рассматриваются способы использования основных объектов модели ADO.NET для доступа к данным в реляционных базах данных. Благодаря подробным примерам, читатели могут изучить способы использования основных свойств и методов, а также узнать о более сложных компонентах и технологиях. Многочисленные листинги с кодом на языке Visual Basic .NET иллюстрируют используемые концепции, а бизнес-ситуации показывают практическую область их применения.
Обработка баз данных на Visual Basic®.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
2. Создайте в проекте DataSetCode новую форму.
3. В окне свойств Properties укажите значение frmUpdates для свойства (Name) и значение DataAdapter Updates для свойства Text.
4. Увеличьте размер формы frmUpdates.
5. Создайте в правой части формы сетку данных DataGrid, перетаскивая ее из панели элементов управления.
6. В окне Properties укажите значение grdDataGrid для свойства (Name) сетки данных.
7. Увеличьте размер сетки данных, чтобы она занимала до 80% всей площади формы.
8. В верхнем левом углу формы создайте кнопку, перетаскивая ее из панели элементов управления.
9. В окне Properties укажите значение btnLoad для свойства (Name) и значение Load для свойства Text этой кнопки.
10. Создайте новую кнопку непосредственно под кнопкой btnLoad, перетаскивая ее из панели элементов управления.
11. В окне Properties укажите значение btnLoad для свойства (Name), значение Load для свойства Text и значение False для свойства Enabled этой кнопки.
12. В верхней части файла с кодом формы frmUpdates введите следующий код:
Imports System
Imports System.Data
Imports System.Data.SqlClient
13. Затем в код формы frmUpdates введите код из листинга 6.3.
Private dsEmployeeInfo As DataSet
Private daEmployees As SqlDataAdapter
Private conn As New SqlConnection( _
"server=localhost;uid=sa;pwd=;database=novelty")
' Применение объекта SqlCommandBuilder
' для автоматической генерации команд обновления.
Private cbEmployees As SqlCommandBuilder
Private Sub btnLoad_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnLoad.Click
dsEmployeeInfo = New DataSet()
LoadCommandBuilder()
' Конфигурирование объекта-сетки DataGrid.
Me.grdDataGrid.PreferredColumnWidth = 110
Me.grdDataGrid.AllowSorting = True
' Вставка данных в объект DataSet.
daEmployees.Fill(dsEmployeeInfo, "Employees")
' Присвоение объекта DataSet объекту DataGrid.
Me.grdDataGrid.DataSource = _
dsEmployeeInfo.Tables("Employees")
Me.btnUpdate.Enabled = True
End Sub
Private Sub btnUpdate_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnUpdate.Click
daEmployees.Update(dsEmployeeInfo, "Employees")
End Sub
Private Sub LoadCommandBuilder()
Dim param As SqlParameter
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
' Создание нового объекта DataAdapter.
Dim SQL As String SQL = "Select FirstName, LastName, Department ID, Salary, _
ID from tblEmployee"
daEmployees = New SqlDataAdapter(SQL, conn)
' Создание команды с помощью SqlCommandBuilder.
cbEmployees = New SqlCommandBuilder(daEmployees)
End Sub
Основная подпрограмма LoadCommandBuilder() вызывается после щелчка на кнопке Load. Она демонстрирует способ явного открытия подключения, возможность избежать возникновения исключительных ситуаций при нескольких последовательных щелчках на кнопке Load и конфигурирование адаптера данных SqlDataAdapter (объект daEmployees) и конструктора команд SqlCommandBuilder (объект cbEmployees). Эти два объекта создаются и инициализируются с помощью их конструкторов, которые принимают значения своих свойств в качестве параметров. Конструктор объекта daEmployees получает строку с командой SELECT и объект подключения, а объект cbEmployees — адаптер данных daEmployees.
Только один объект SqlDataAdapter может быть связан только с одним объектом SqlCommandBuilder.
Далее конфигурируется объект-сетка, вызывается метод Fill для загрузки таблицы Employees в объект daEmployees, задается таблица Employees для свойства DataSource объекта daEmployees и автоматически отображаются данные в сетке.
Обработчик события щелчка на кнопке Update содержит только одну строку кода, которая просто вызывает метод Update для объекта daEmployees.
Скомпонуйте проект DataSetCode и щелкните на кнопке DataAdapter Updates в форме frmDataSets. После отображения на экране формы frmUpdates щелкните на кнопке Load. Это приведет к считыванию данных из таблицы Employees, загрузке данных в объект tblEmployees объекта dsEmployeeInfo и отображению их в сетке, как показано на рис. 6.2.
Теперь можно протестировать работу этой формы, внося в данные произвольные изменения. Например, добавьте в сетку новые записи, прокручивая ее вниз и вводя новые данные в последней пустой строке сетки. Удалите несколько строк, выделяя их и нажимая клавишу . Измените значения некоторых данных в уже имеющихся записях. Учтите, что все эти изменения не будут отражены в базе данных до тех пор, пока пользователь не щелкнет на кнопке Update. Внесенные в базу данных изменения можно проверить, используя любые инструменты просмотра таблиц базы данных или щелкая на кнопке Load для повторной загрузки данных из таблиц базы данных в объект grdDataGrid формы frmUpdates.

РИС. 6.2. Отображение данных из таблицы tblEmployees в сетке grdDataGrid
Хотя использование объекта CommandBuilder для генерации команд обновления требует минимального количества кода, оно связано со значительными накладными расходами. Дело в том, что объект CommandBuilder должен выполнить дополнительное обращение к серверу базы данных для извлечения метаданных, которые необходимы для автоматической генерации команд обновления. Эта возможность очень полезна и позволяет создавать запросы "на лету". Однако, если запросы уже известны во время создания приложения, явное указание команд и их параметров в коде и использование явных команд обновления или программы-мастера DataAdapter Configuration Wizard приведет к повышению производительности.
Явное указание команд обновления
В отличие от довольно простого способа генерации нужных команд обновления с помощью объекта CommandBuilder, явное указание команд обновления в коде представляет собой хотя и более гибкий, но весьма трудоемкий способ. При его использовании каждая из четырех команд управления данными (Select, Insert, Update и Delete) должна быть создана отдельно. Чаще всего они кодируются в виде хранимой процедуры для каждой команды SQL.
В листинге 6.4 представлен сценарий SQL Server для генерации четырех хранимых процедур. Хранимая процедура SelectEmployees просто выбирает все поля таблицы tblEmployee. Хранимая процедура InsertEmployee принимает четыре параметра, т.е. по одному для каждого обновляемого поля. Хранимая процедура UpdateEmployee принимает те же четыре параметра для обновляемых полей и еще один параметр для исходного значения идентификационного поля, которое используется в предложении WHERE для выбора обновляемой записи (на основании первичного ключа). Хранимая процедура DeleteEmployee принимает исходное значение идентификационного поля для удаления указанной записи.
IF EXISTS (SELECT * FROM sysobjects WHERE name =
'SelectEmployees' AND user__ name(uid) = 'dbo'
DROP PROCEDURE [dbo].[SelectEmployees]
GO
CREATE PROCEDURE [dbo].[SelectEmployees]
Интервал:
Закладка: