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

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

Жанры

Обработка баз данных на 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'"

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

Клинок Судеб

Глушков Владислав
Проза:
современная проза
5.75
рейтинг книги
Клинок Судеб

Я снова не князь! Книга XVII

Дрейк Сириус
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
6.25
рейтинг книги
Я снова не князь! Книга XVII

Газлайтер. Том 2

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

На границе империй. Том 10. Часть 10

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 10

Газлайтер. Том 31

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

Третий. Том 5

INDIGO
5. Отпуск
Фантастика:
космическая фантастика
фантастика: прочее
5.67
рейтинг книги
Третий. Том 5

Карл Маркс

Серебрякова Галина Иосифовна
342. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Карл Маркс

Тринадцатый IX

NikL
9. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Тринадцатый IX

Первый среди равных. Книга VI

Бор Жорж
6. Первый среди Равных
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Первый среди равных. Книга VI

Газлайтер. Том 18

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

Женщина в песках

Абэ Кобо
Проза:
современная проза
8.29
рейтинг книги
Женщина в песках

Далекие горизонты (сборник)

Ле Гуин Урсула Кребер
Фантастика:
фэнтези
научная фантастика
космическая фантастика
5.00
рейтинг книги
Далекие горизонты (сборник)

Великий род

Сай Ярослав
3. Медорфенов
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Великий род

Отель

Хейли Артур
Проза:
современная проза
9.51
рейтинг книги
Отель