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

на главную

Жанры

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

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

Шрифт:

На рис. 6.1 показана схема использования объекта DataAdapter. Основным назначением этого объекта является управление процессом передачи данных от источника данных к объекту DataSet и от объекта DataSet к источнику данных. Это выполняется с помощью небольшого набора свойств и методов, которые описываются далее.

РИС. 6.1. Схема работы объекта DataAdapter — как моста между источником данных и объектом DataSet

Основными методами объекта DataAdapter являются Fill и Update. Метод Fill наполняет объект DataAdapter данными, полученными от источника данных, а метод Update

обновляет источник данных в соответствии с изменениями данных в таблицах объекта DataSet.

Объект DataAdapter содержит набор из четырех свойств (Select Command, InsertCommand, UpdateCommand и DeleteCommand), которые являются объектами ADO.NET типа Command, конфигурированными для выполнения одноименных операций. Например, объект SelectCommand выполняется при вызове метода Fill объекта DataAdapter, а остальные объекты выполняются для каждой измененной записи при вызове метода Update объекта DataAdapter. Разработчики базы данных обладают полным контролем над этими командами, которые позволяют настраивать команды, используемые для операций вставки, обновления и удаления.

Наконец, коллекция TableMappings объектов DataTableMapping позволяет указать соответствие между таблицей источника данных и объектом DataTable.

Передача данных из источника данных в объект DataSet

Для использования объекта DataAdapter требуется, как минимум, подключение к базе данных и команда Select. Для этого можно использовать объекты Connection и Command, т.е. создать их, конфигурировать и присвоить их свойствам Connection и SelectCommand объекта DataAdapter. Однако гораздо удобнее использовать для этого конструктор объекта DataAdapter с двумя строковыми параметрами: один для команды SELECT, а второй для строки подключения, как показано ниже.

Dim da As SqlDataAdapter = New SqlDataAdapter( _

"select * from tblDepartment" _

"server=localhost;uid=sa;database=Novelty")

НА ЗАМЕТКУ

Учтите, что указанная в объекте SelectCommand команда SQL может иметь параметры. В главе 4, "Модель ADO.NET: провайдеры данных", приводятся основные сведения об определении этих параметров для разных провайдеров данных .NET.

Попробуем теперь вызвать метод Fill для извлечения данных из базы данных Novelty и загрузки их в объект DataSet. Для этого вернитесь к проекту DataSetCode из главы 5, "ADO.NET: объект DataSet", и выполните перечисленные ниже действия.

1. Щелкните правой кнопкой мыши на проекте DataSetCode в окне Solution Explorer и выберите в контекстном меню команду Properties, чтобы открыть диалоговое окно DataSetCode Property Pages.

2. Выберите раздел General в папке Common Properties в правой части диалогового окна DataSetCode Property Pages, а затем выберите форму frmDataSets в поле Startup object.

3. Откройте форму frmDataSets в окне конструктора формы. 

4. Создайте новую кнопку непосредственно под кнопкой Constraints, перетаскивая ее из панели элементов управления.

5. В окне свойств Properties укажите значение btnDataAdapterFill для свойства (Name) и значение DataAdapter Fill для свойства Text.

6. Для использования провайдера данных SqlClient нужно импортировать его пространство имен с помощью команды, отмеченной полужирным начертанием в следующем фрагменте кода:

Imports System

Imports System.Data

Imports System.Data.SqlClient

7. Вставьте код, показанный в листинге 6.1.

Листинг 6.1. Использование провайдера данных SqlClient для вставки данных В Набор данных dsEmployeeInfо

Private Sub btnDataAdapterFill_Click(ByVal sender As _

 System.Object, ByVal e As System.EventArgs) _

 Handles btnDataAdapterFill.Click

 ReadData

End Sub

Private Sub ReadData

 Dim rows As Integer

 Dim daDepartments As SqlDataAdapter = New SqlDataAdapter( _

"select * from tblDepartment", _

"server=localhost;uid=sa;database=novelty")

 dsEmployeeInfo = New DataSet

 rows = daDepartments.Fill(dsEmployeeInfo, "Departments")

 DisplayDataSet(dsEmployeeInfo)

End Sub

После

создания объекта daDepartments с двумя аргументами, которые содержат команду Select и строку подключения, вызывается метод Fill для наполнения данными таблицы Departments набора данных dsEmployeeInfo. Метод Fill также возвращает количество записей, которые включены (или обновлены) в набор данных dsEmployeeInfo. При выполнении метода Fill провайдером данных неявно выполняются перечисленные ниже действия.

• Для объекта SelectCommand открывается подключение к источнику данных, если оно еще не открыто.

• Выполняется команда, указанная в свойстве CommandText объекта SelectCommand (вместе с параметрами, если таковые имеются).

• Создается объект DataReader для возвращения имен полей и типов, использованных для создания нового объекта DataTable в указанном наборе данных DataSet, если этого объекта еще не существует.

• Объект DataReader используется для извлечения данных и вставки их в таблицу.

• Объект DataReader закрывается.

• Подключение к источнику данных закрывается, если оно было открыто объектом DataReader, в противном случае оно остается открытым.

НА ЗАМЕТКУ

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

Private Sub ReadData

 Dim rows As Integer

 Dim daDepartments As SqlDataAdapter

 Dim соnn As New SqlConnection (_

 "server=localhost;uid=sa;database=novelty")

 Dim cmdSelect As New SqlCommand(_

"select * from tblDepartment")

 dsEmployeeInfо = New DataSet

 cmdSelect.Connection = conn

 daDepartments.SelectCommand = cmdSelect

 ' Открытие подключения перед выполнением команд

 conn.Open

 rows = daDepartments.Fill(dsEpmloyeeInfo, "Departments")

 ' Выполнение операций с базой данных.

 ' ...

 DisplayDataSet(dsEmployeeInfо)

 ' Закрытие подключения после выполнения всех команд.

 conn.Close

End Sub

Конечно, для эффективного использования явно созданных объектов conn и cmdSelect желательно, чтобы количество операций с базой данных было достаточно большим.

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

Возрождение Феникса. Том 2

Володин Григорий Григорьевич
2. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.92
рейтинг книги
Возрождение Феникса. Том 2

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Сумеречный Стрелок 4

Карелин Сергей Витальевич
4. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 4

Аномалия

Юнина Наталья
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Аномалия

Весь цикл «Десантник на престоле». Шесть книг

Ланцов Михаил Алексеевич
Десантник на престоле
Фантастика:
альтернативная история
8.38
рейтинг книги
Весь цикл «Десантник на престоле». Шесть книг

Диверсант

Вайс Александр
2. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Диверсант

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

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

Дело Чести

Щукин Иван
5. Жизни Архимага
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Дело Чести

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Я Гордый часть 2

Машуков Тимур
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2

Начальник милиции 2

Дамиров Рафаэль
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции 2

Авиатор: назад в СССР 10

Дорин Михаил
10. Покоряя небо
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Авиатор: назад в СССР 10

Курсант: Назад в СССР 11

Дамиров Рафаэль
11. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 11

Адепт. Том 1. Обучение

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
9.27
рейтинг книги
Адепт. Том 1. Обучение