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

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

Жанры

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

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

Шрифт:

Вставка данных в объект DataTable

После определения объекта DataTable и его схемы можно начинать ввод данных.

В листинге 5.2 приводится код вставки записей с данными в DataTable. Подпрограмма AddData включает четыре записи с данными в таблицу Departments и три записи с данными в таблицу Employees следующим образом.

1. Сначала создается новый экземпляр объекта DataRow для нужной таблицы с помощью метода NewRow.

2. Затем присваиваются значения полям этой записи.

3. После этого запись включается в коллекцию записей Rows таблицы с помощью метода Add свойства Rows таблицы.

ЛИСТИНГ 5.2. Код программного ввода данных в объект DataTable

Private Sub AddData

 Dim dtDepartments As DataTable = dsEmployeeInfo.Tables ("Departments")

 Dim dtEmployees As DataTable = dsEmployeeInfo.Tables("Employees")

 ' Вставка четырех записей в таблицу Departments.

 Dim rowDept As DataRow

 rowDept = dtDepartments.NewRow

 rowDept("ID") = 11

 rowDept("DepartmentName") = "Administration"

 dtDepartments.Rows.Add(rowDept)

 rowDept = dtDepartments.NewRow rowDept("ID") = 22

 rowDept("DepartmentName") = "Engineering"

 dtDepartments.Rows.Add(rowDept)

 rowDept = dtDepartments.NewRow

 rowDept("ID") = 33

 rowDept("DepartmentName") = "Sales"

 dtDepartments.Rows.Add(rowDept)

 rowDept = dtDepartments.NewRow rowDept("ID") =44

 rowDept("DepartmentName") = "Marketing"

 dtDepartments.Rows.Add(rowDept)

 ' Вставка трех записей в таблицу Employees.

 Dim rowEmployee As DataRow

 rowEmployee = dtEmployees.NewRow

 rowEmployee("FirstName") = "Jackie"

 rowEmployee("LastName") = "Goldstein"

 rowEmployee("DepartmentID") = 22

 dtEmployees.Rows.Add(rowEmployee)

 rowEmployee = dtEmployees.NewRow

 rowEmployee("FirstName") = "Jeffrey"

 rowEmployee("LastName") = "McManus"

 rowEmployee("DepartmentID") = 33

 dtEmployees.Rows.Add(rowEmployee)

 rowEmployee = dtEmployees.NewRow

 rowEmployee("FirstName") = "Sam"

 rowEmployee("LastName") = "Johnson"

 rowEmployee("DepartmentID") = 33

 dtEmployees.Rows.Add(rowEmployee)

End Sub

НА ЗАМЕТКУ

Новую запись можно вставить в таблицу, передавая методу Add массив объектов, содержащих данные в порядке следования полей в определении таблицы. В листинге 5.2 этот способ мог быть представлен так:

Dim empData(2) As Object

empData(0) = "Sam"

empData(1) = "Johnson"

empData(3) = 33

dtEmployees.Rows.Add(empData)

Обновление данных в объекте DataSet

Для обновления отдельной записи таблицы необходимо просто организовать доступ к нужной записи и присвоить новое значение одному из полей. Например, для изменения номера отдела, к которому относится Sam Johnson, можно использовать следующую строку кода:

dtEmployees.Rows(2) ("DepartmentID") = 2

НА ЗАМЕТКУ

В этой строке кода номер записи (2) приводится из предположения, что нам известно расположение записей в таблице. Но с практической точки зрения этот способ не совсем удачен, более эффективный и безопасный способ основан на поиске нужной строки (или нескольких строк). Он описывается в разделе о доступе к данным в объекте DataTable далее в главе.

Таким образом, в данные можно вносить произвольное количество изменений, но все они не будут зафиксированы до тех пор, пока не будет вызван метод AcceptChanges. Для отката изменений, внесенных после загрузки данных или последнего вызова метода AcceptChanges, используется метод RejectChanges.

НА ЗАМЕТКУ

Метод AcceptChanges (и метод RejectChanges) можно использовать на нескольких разных уровнях, т.е. в классах DataTable, DataSet и DataRow. Вызов метода AcceptChanges объекта DataSet приведет к вызову этого метода для каждой таблицы объекта DataSet. Аналогично вызов метода AcceptChanges DataTable приведет к вызову этого метода для каждой записи объекта DataTable. Таким образом можно зафиксировать изменения отдельно для каждой записи или сразу для всех данных объекта DataSet. To же самое относится к методу RejectChanges.

Строки можно вставлять и удалять целиком. До сих пор был показан только процесс создания записей, а удаление записи основано на методе Remove объекта DataRowCollection (т.е. свойство Rows объекта DataTable). Этот метод полностью удаляет запись из коллекции. Другой способ удаления записи основан на методе Delete объекта DataRow. Этот метод отмечает запись для удаления, которое на самом деле произойдет только после вызова метода AcceptChanges.

После вызова метода Remove все данные записи будут удалены необратимо, даже если после этого вызвать метод RejectChanges.

Состояние и версия записи

Каждый объект DataRow имеет свойство RowState, которое обозначает текущее состояние или статус записи. Кроме того, каждая запись хранит информацию о четырех разных версиях своего значения. По мере редактирования записи изменяется ее состояние и версия значения. В табл. 5.1 приведено краткое описание свойства RowState, а в табл. 5.2 – краткое описание свойства DataRowVersion.

Таблица 5 1. Свойство RowState

Член перечисления Описание
Unchanged Никаких изменений не внесено с момента последнего вызова метода AcceptChanges или после загрузки данных с помощью объекта DataAdapter
Added Запись вставлена в коллекцию DataRowCollection (т.е. в свойство Rows объекта DataTable), но метод AcceptChanges еще не вызывался
Deleted Метод Delete вызван для удаления записи, но метод AcceptChanges еще не вызывался
Modified Запись изменена, но метод AcceptChanges еще не вызывался
Detached Запись создана, но не добавлена в коллекцию DataRowCollection, либо метод Remove вызван для удаления записи из коллекции DataRowCollection, либо метод Delete вызван для удаления записи и вызван метод AcceptChanges
Поделиться:
Популярные книги

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

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

Глубокий космос

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

Воронцов. Перезагрузка. Книга 2

Тарасов Ник
2. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Воронцов. Перезагрузка. Книга 2

Adobe Photoshop CS3

Завгородний Владимир
Видеосамоучитель
Компьютеры и Интернет:
программное обеспечение
7.25
рейтинг книги
Adobe Photoshop CS3

До конца времен

Стил Даниэла
Любовные романы:
современные любовные романы
5.80
рейтинг книги
До конца времен

Кодекс Охотника XXXI

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

Очень сильный пол (сборник)

Кабаков Александр Абрамович
Проза:
современная проза
6.25
рейтинг книги
Очень сильный пол (сборник)

Французская новелла XX века. 1900–1939

Пруст Марсель
Проза:
классическая проза
6.25
рейтинг книги
Французская новелла XX века. 1900–1939

Охотник за головами

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

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Лекарь Империи 6

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

Я не царь. Книга XXIV

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

Ботаник 2

Щепетнов Евгений Владимирович
2. Ботаник
Фантастика:
фэнтези
боевая фантастика
6.00
рейтинг книги
Ботаник 2

Облава на волка

Серегин Михаил Георгиевич
Детективы:
боевики
5.00
рейтинг книги
Облава на волка