- •Работа с автономными объектами ADO
- •Отсоединённые данные
- •Объект DataSet
- •DataSet
- •Создание экземпляра объекта DataSet
- •Создание экземпляра объекта DataSet
- •Обычно выполняют следующие шаги создания и обновления
- •Ввод данных в объект DataSet
- •Объект DataAdapter
- •Объект DataAdapter
- •Объект DataAdapter
- •DataReader vs. DataAdapter
- •Создание объекта DataAdapter
- •1 конструктор
- •2 конструктор принимает строку запроса и объект-подключение
- •3 конструктор
- •Метод Fill
- •Метод FILL
- •Синтаксис вызова метода Fill для заполнения объекта DataSet
- •Использование метода Fill
- •Объект DataRow
- •Модификация и обновление
- •Добавление записи
- •Добавление записи - пример
- •Редактирование записи
- •Редактирование записи - пример
- •Удаление записи
- •Удаление записи
- •Возможности поиска и фильтрации DataTable
- •Существует 2 метода для поиска данных по заданному критерию
- •…‘Создание и открытие соединения
- •Второй метод
- •Метод Select (продолжение)
- •Поддержка изменений в объектах DataRow
- •Изменения в объектах DataRow, которые еще не были приняты или отклонены, обслуживаются перечислениями
- •Свойство RowState
- •Свойство DataRowVersion
- •Просмотр строки (разные версии)
- •Принятие и отклонение изменений в DataTable
- •Итого
- •Передача изменений в БД
- •Передача обновлений в БД
- •1. Передача обновлений DataAdapter-ом
- •Метод DataAdapter.Update -
- •DataAdapter.Update - пример
- •Команды объекта DataAdapter
- •Создать INSERT, DELETE, UPDATE для обновления можно:
- •1. Вручную
- •1. Вручную - пример
- •2. Объект CommandBuilder
- •2. Объект SqICommandBuilder для генерирования логики
- •условия:
- •Пример
- •Public dt As New DataTable Public da As OleDbDataAdapter
- •Изменение данных
- •Обратная запись в БД
- •КОНЕЦ ЛЕКЦИИ!!
…‘Создание и открытие соединения
Dim tbl As New DataTable("Customer")
…‘Создание столбцов таблицы, задание первичного ключа, заполнение таблицы данными
Dim row As DataRow = tbl.Rows.Find(2) If row Is Nothing Then
MsgBox("Ничего не нашли") Else
MsgBox(row("CompanyName"))
End If
31
Второй метод
2. Метод Select — играет роль фильтра,
Аргумент метода = строковое выражение, записанное по правилам Where запроса Select.
Результат - строки данных DataRow
Dim strFilter As String |
|
strFilter = "Country= 'Россия' AND City <> 'Москва ' " |
|
For Each row As DataRow In tbl.Select(strFilter) |
|
MsgBox(row("CompanyName") & row("City") |
|
Next |
32 |
Метод Select (продолжение)
Полный синтаксис метода –
DataTable.Select(ВыражениеФильтр,Столб
ецСортировки,ВыражениеФильтраСостоя
нияСтроки)
ВыражениеФильтраСостоянияСтроки – см. слайды далее
33
Поддержка изменений в объектах DataRow
34
Изменения в объектах DataRow, которые еще не были приняты или отклонены, обслуживаются перечислениями RowState и DataRowVersion
35
Свойство RowState
Используется для определения состояния строки. После начального заполнения объекта Data Table все строки имеют в RowState значения Unchanged
Свойство DataRowVersion
Кроме RowState, каждая строка поддерживает также различные версии после проделанных изменений. Обращаются к этим версиям с использованием перечисления DataRowVersion
Просмотр строки (разные версии)
row("CompanyName") = "New Value”
Console.WriteLine(“DataRowVersion.Current = “ &
row("CompanyName", DataRowVersion.Current))
Console.WriteLine(“DataRowVersion.Original = “ &
row("CompanyName", DataRowVersion.Original))
38
Принятие и отклонение изменений в DataTable
Когда все изменения в строке будут
сделаны правильно, их можно принять, вызвав метод AcceptChanges. Его можно вызвать для DataRow, DataTable или всего DataSet.
Если вы решили отклонить изменения, вызовите метод RejectChanges
39
Итого
объект DataRow
свойство RowState метод AcceptChanges, метод RejectChanges.
Методы AcceptChanges,
RejectChanges работают с состоянием строки (Original, Current), но никак не влияют на состояние БД!!!!
40
