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

на главную

Жанры

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

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

Шрифт:

 .Add("ID", "empEmployeeID")

 .Add("FirstName", "empFirstName")

 .Add("LastName", "empLastName")

 .Add("DepartmentID", "empDepartmentID")

 .Add("Salary", "empSalary")

End With

daEmployees.Update(dsEmployeeInfo, "MappingName")

В главе 6, "ADO.NET: объект DataAdapter" (см. листинги 6.1 и 6.2) представлена функция Read Data, которая вставляет в объект DataSet данные из источника данных и отображает содержимое объекта DataSet

в списке формы frmDataSets (см. проект DataSetCode из главы 5, "ADO.NET: объект DataSet"). Если в подпрограмме обработки щелчков на кнопке DataAdapter Fill вместо функции ReadData вызвать ее измененную версию ReadDataMapped, которая содержит код, показанный в листинге 7.5, то после запуска приложения проекта DataSetCode будет получен результат, показанный на рис. 7.1.

РИС. 7.1. Содержимое объекта DataSet с отображениями таблицы и полей

Листинг 7.5. Измененная версия функции ReadDataMapped для отображения таблицы и полей

Private Sub ReadDataMapped

 Dim daEmployees As SqlDataAdapter = New _

SqlDataAdapter("select * from tblEmployee", _

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

 dsEmployeeInfo = New DataSet

 ' Конфигурация отображений таблицы и полей.

 daEmployees.TableMappings.Add("MappingName", "empDataSetTable")

 With daEmployees.TableMappings("MappingName").ColumnMappings

.Add("ID", "empEmployeeID")

.Add("FirstName", "empFirstName")

.Add("LastName", "empLastName")

.Add("DepartmentID", "empDepartmentID")

.Add("Salary", "empSalary")

 End With

 daEmployees.Fill(dsEmployeeInfo, "MappingName")

 DisplayDataSet(dsEmployeeInfo)

End Sub

НА ЗАМЕТКУ

По умолчанию отображение таблицы называется Table. Оно применяется в том случае, если в методе Fill (или методе Update) используется только имя объекта DataSet. Однако его можно указать явно вместе с нужным именем таблицы с помощью приведенного ниже кода.

daEmployees.TableMappings.Add("Table", "MyTableName")

daEmployees.Fill(dsEmployeeInfo)

Это приведет к созданию таблицы MyTableName и вставке данных в нее.

Объект DataView

Объект DataView позволяет одновременно создавать разные представления данных из объекта DataTable и обладает перечисленными ниже свойствами, которые позволяют настраивать способ отображения данных.

Порядок сортировки (нисходящий или восходящий) по одному или нескольким полям.

Выражение для фильтрации записей, которое указывает критерии отображения записей на основе значений полей.

Фильтр состояния записи, который указывает критерии отображения записей на основе состояния записи (см. перечисление DataViewRowState, показанное в

табл. 5.3).

Хотя этот способ может показаться аналогичным способу на основе использования метода Select объекта DataTable, они существенно отличаются. С одной стороны, объект DataView – это полностью динамичное представление данных. Помимо изменений значений полей, вставки и удаления записей в таблице-источнике немедленно отражаются в объекте DataView. С другой стороны, метод Select возвращает массив фиксированный длины со ссылками на записи, которые отражают изменения значений полей в таблице-источнике, но не отражают вставку и удаление записей или их упорядочение. Этот динамический аспект объекта DataView особенно эффективно применяется для создания кода, связанного с данными. 

НА ЗАМЕТКУ

Хотя объект DataView аналогичен классическому представлению базы данных, он все же отличается от него следующим:

• не может использоваться как таблица;

• не может быть объединением нескольких таблиц;

• не может исключать поля, которые присутствуют в таблице-источнике;

• не может включать дополнительные поля (например, вычисленные поля), которых нет в таблице-источнике.

Объекты DataView используются с помощью свойства DefaultView объекта DataTable. Предположим, нужно создать представление для таблицы Customers, причем клиенты в нем должны быть упорядочены по почтовым индексам и иметь фамилии, начинающиеся с символа С. Для этого нужно использовать указанные ниже значения двух соответствующих свойств.

dsCustomers.Tables("Customers").DefaultView.RowFilter = _

 "LastName = 'Like C* ' "

dsCustomers.Tables("Customers").DefaultView.Sort = "Zip"

Если необходимо отобразить в представлении текущие значения только из тех записей, которые были изменены (но еще не сохранены), то нужно указать новое значение для свойства RowFilter и значение свойства RowState.

dsCustomers.Tables("Customers").DefaultView.RowFilter = " "

dsCustomers.Tables("Customers").DefaultView.RowStateFilter = _

 DefaultView.RowState.ModifiedCurrent

НА ЗАМЕТКУ

Объект DataView также имеет метод Find для поиска одной записи и метод FindRows для поиска и возвращения нескольких записей. Если нужно извлечь или набор записей, которые соответствуют заданному критерию, вместо динамического представления данных, то с помощью методов Find и FindRows (вместо указания свойства RowFilter) будут возвращены только интересующие нас записи. Этот метод обладает более высокой производительностью, чем метод на основе установки значения свойства RowFilter. Дело в том, что указание значения свойства RowFilter вызывает перестройку индекса представления, а методы Find и FindRows используют уже существующие индексы.

Для таблицы могут быть созданы также дополнительные объекты – представления данных. Для определения еще одного представления таблицы Customers нужно создать еще один объект dvView2 и указать его свойства так, как показано ниже.

dvView2 = New DataView(dsCustomers.Tables("Customers"), _

 "", "LastName", DataViewRowState.CurrentRows)

Теперь, после определения объекта DataView, можно изменить его свойства.

dvView2.RowFilter = "LastName > 'F'"

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

Возрождение Феникса. Том 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. Обучение