Класс DbDataAdapter
Класс DbDataAdapter – это своеобразный мост между реляционной БД и отсоединенными объектами модели ADO.NET.
Взаимодействие клиентского приложения с БД возможно с помощью ранее описанных классов DbCommand и, если запрос возвращает значения, DbDataReader. При работе с этими классами каждая команда обработки данных клиентского приложения вызывает обращение к ЛИНТЕР-серверу.
Например, при добавлении в БД 100000 записей с помощью метода DbCommand будет выполнено 100000 обращений к ЛИНТЕР-серверу, т.к. записи добавляются по одной. При этом соединение с БД должно быть всегда открыто. Такой уровень взаимодействия с СУБД в ADO.NET называется связным. Во многих случаях этот уровень не является оптимальным с точки зрения производительности.
Альтернативный уровень взаимодействия с СУБД, называемый несвязный, предоставляет класс DbDataAdapter.
В отличие от связного уровня, данные, полученные с помощью адаптера данных, не обрабатываются с помощью объекта чтения данных. Вместо этого для обмена данными между клиентским приложением и ЛИНТЕР-сервером используется так называемый отсоединенный объект DataSet. DataSet – это контейнер, используемый для любого числа объектов DataTable, каждый из которых содержит коллекцию объектов DataRow и DataColumn.
Т.е. с помощью класса DbDataAdapter данные, извлеченные из БД, помещаются в объект DataSet и становятся доступными клиентскому приложению, и наоборот, кэшированные в DataSet обновления передаются в БД.
Класс DbDataAdapter устанавливает соединение с ЛИНТЕР-сервером автоматически и
сохраняют его открытым на минимально необходимое время. Как только клиентское приложение получает запрошенные
данные (т.е. объект DataSet), соединение с ЛИНТЕР-сервером разрывается. Клиентское
приложение работает с локальной копией загруженных с БД ЛИНТЕР-сервера данных в автономном режиме, без
взаимодействия с ЛИНТЕР-сервером. Оно может вставлять, удалять и модифицировать данные DataTable,
но физически БД не будет обновлена до тех пор, пока клиентское приложение не передаст явно
объект DataSet адаптеру данных для обновления.
Конструкторы класса DbDataAdapter приведены в таблице 24.
| Конструктор | Описание |
|---|---|
| LinterDbDataAdapter() | Создает новый объект LinterDbDataAdapter со свойствами по умолчанию. |
| LinterDbDataAdapter(LinterDbCommand) | Создает новый объект LinterDbDataAdapter с заданным SQL-оператором. |
| LinterDbDataAdapter(String, LinterDbConnection) | Создает новый объект LinterDbDataAdapter с заданным SQL-оператором для указанного соединения с источником данных. |
| LinterDbDataAdapter(String, String) | Создает новый объект LinterDbDataAdapter с заданными SQL-оператором и строкой подключения к источнику данных. |
Свойства класса DbDataAdapter приведены в таблице 25.
| Свойство | Описание |
|---|---|
| AcceptChangesDuringFill | Предоставляет/устанавливает признак необходимости вызова метода AcceptChanges при добавлении новой строки в DataTable при выполнении любой из операций методом Fill. |
| AcceptChangesDuringUpdate | Предоставляет/устанавливает признак необходимости вызова метода AcceptChanges при модификации строки с помощью метода Update(). |
| ContinueUpdateOnError | Предоставляет/устанавливает признак необходимости генерировать исключение при обнаружении ошибки во время обновления строки. |
| DeleteCommand | Предоставляет/устанавливает текст SQL-оператора, используемого для удаления записей из источника данных. |
| FillLoadOption | Предоставляет/устанавливает значение перечисления типа LoadOption, определяющее, как адаптер заполняет объект DataTable из объекта DbDataReader. |
| InsertCommand | Предоставляет/устанавливает текст SQL-оператора, используемого для добавления записей в источник данных. |
| MissingMappingAction | Предоставляет/устанавливает реакцию объекта DbDataAdapter в ситуации, когда загружаемые таблицы (или столбцы) отсутствуют в коллекции TableMappings объекта DataSet. |
| MissingSchemaAction | Предоставляет или устанавливает реакцию объекта DbDataAdapter в ситуации, когда схема загружаемых данных не соответствует схеме в текущем объекте DataSet. |
| ReturnProviderSpecificTypes | Предоставляет/устанавливает тип данных, возвращаемых ADO.NET-провайдером при выполнении метода Fill. |
| SelectCommand | Предоставляет/устанавливает текст SQL-оператора, используемого для выборки данных в источнике данных. |
| TableMappings | Предоставляет коллекцию столбцов таблицы из источника данных, используемую для сопоставления со столбцами соответствующего объекта DataTable. |
| UpdateBatchSize | Задает/отменяет режим пакетного обновления записей и предоставляет/устанавливает размерность пакета обновлений. |
| UpdateCommand | Предоставляет/устанавливает текст SQL-оператора, используемого для обновления записей в источнике данных. |
Методы класса DbDataAdapter приведены в таблице 26.
| Метод | Описание |
|---|---|
Fill(DataSet)
| Добавляет/обновляет строки в объекте DataSet. |
Fill(DataTable)
| Добавляет/обновляет строки в объекте DataTable. |
Fill(DataSet, String)
| Добавляет/обновляет строки в указанной таблице объекта DataSet для получения соответствия строкам, полученный из источника данных. |
Fill(Int32, Int32, DataTable)
| Добавляет/обновляет строки в объекте DataTable из указанной части таблицы в источнике данных. |
Fill(DataSet, Int32, Int32, String)
| Добавляет/обновляет строки в объекте DataSet из указанной части таблицы в источнике данных. |
FillSchema(DataSet, SchemaType, String)
| Настраивает схему объекта DataSet в соответствие со схемой в источнике данных. |
FillSchema(DataSet, SchemaType)
| Добавляет объект DataTable с именем "Table" в объект DataSet и настраивает его схему в соответствии с источником данных. |
FillSchema(DataTable, SchemaType)
| Настраивает схему данных для указанного объекта DataTable. |
GetFillParameters
| Предоставляет информацию о параметрах параметризованного SELECT-оператора в виде массива объектов IDataParameter. |
Update(DataRow[])
| Выполняет необходимые операторы (INSERT, UPDATE или DELETE) для изменения строк в указанном массиве объектов DataRow. |
Update(DataSet)
| Выполняет необходимые операторы (INSERT, UPDATE или DELETE) для изменения строк в первой таблице объекта DataSet. |
Update(DataTable)
| Выполняет необходимые операторы (INSERT, UPDATE или DELETE) для изменения строк в указанном объекте DataTable. |
Update(DataSet, String)
| Выполняет необходимые операторы (INSERT, UPDATE или DELETE) для изменения строк в указанной таблице объекта DataSet. |
События класса DbDataAdapter приведены в таблице 27.
| Событие | Описание |
|---|---|
| FillError | Генерируется при возникновении ошибки в методе Fill. |
| RowUpdating | Генерируется перед обновлением любой строки из DataSet в источнике данных. |
| RowUpdated | Генерируется после обновления в источнике данных строки из DataSet. |