Класс 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 . |