- •Работа с автономными объектами 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
- •Изменение данных
- •Обратная запись в БД
- •КОНЕЦ ЛЕКЦИИ!!
Объект DataAdapter
Объект DataAdapter – основной класс ADO.NET, обеспечивающий доступ к отсоединённым данным
DataAdapter – посредник между БД и объектом DataSet
Методы Fill (заполнение DataSet) и Update (обновление БД)
Свойства
Select/Insert/Delete/UpdateCommand
11
DataReader vs. DataAdapter
DataReader позволяет быстрое и эффективное однонаправленное чтение данных
Менее гибок, чем DataAdapter (нельзя редактировать данные, нельзя вернуться к прочитанной ранее записи, требует монопольного доступа к активному соединению)
12
Создание объекта DataAdapter
13
1 конструктор
принимает строку запроса и строку подключения.
Dim strC, strSQL As String strC = “...."
strSQL = "SELECT * FROM Customers"
Dim da As New OleDbDataAdapter(strSQL,strC)
14
2 конструктор принимает строку запроса и объект-подключение
Dim strConn, strSQL As String |
|
strConn = "Data Source=...." |
|
strSQL = "SELECT CustomerlD, CompanyName FROM |
|
Customers" |
|
Dim da As New OleDbDataAdapter(strSQL, strConn) |
|
Dim cn As New OleDbConnection(strConn) |
|
Dim daCustomers, daOrders As OleDbDataAdapter |
|
strSQL = "SELECT CustomerlD, CompanyName FROM |
|
Customers" |
|
daCustomers = New OleDbDataAdapter(strSQL, cn) |
|
strSQL = "SELECT OrderID,CustomerlD, OrderDate FROM |
|
Orders" |
|
daOrders = New OleDbDataAdapter(strSQL, cn) |
15 |
3 конструктор
Принимает в качестве аргумента имя объекта Command
Dim strConn, strSQL As String strConn = "Data Source=...."
strSQL = "SELECT * FROM Customers" Dim cn As New OleDbConnection(strConn)
Dim cmd As New OleDbCommand(strSQL, cn) Dim da As New OleDbDataAdapter(cmd)
16
Метод Fill
объекта DataAdapter
17
Метод FILL
Метод Fill возвращает количество записей, которые включены (или обновлены) в набор данных.
При выполнении метода Fill также неявно выполняются следующие действия:
Для объекта selectCommand открывается подключение к источнику данных
Выполняется команда select объекта Command
Создается, извлекает данные и закрывается объект DataReader
Подключение закрывается
18
Синтаксис вызова метода Fill для заполнения объекта DataSet
ИмяПер-ойДатаАдаптер.Fill(ИмяПер-ойДатаСет)
19
Использование метода Fill
Dim strConn, strSQL As String strConn = "Data Source=...."
strSQL = "SELECT * FROM Customers"
Dim da As New OleDbDataAdapter(strSQL, strConn) Dim ds As New DataSet()
Dim rows as Integer rows=da.Fill(ds)
MsgBox(“кол-во записей ” & CStr(rows))
Dim row As DataRow
For Each row In ds.Tables(0).Rows MsgBox(row("CustomerID"), row("CompanyName")) Next row
20
