DataAdapter
Предоставляет или устанавливает объект DbDataAdapter, который связан с объектом DbCommandBuilder (т.е. данное свойство определяет объект DbDataAdapter, для которого автоматически генерируются SQL-запросы обновления таблицы).
Объект DbCommandBuilder регистрирует себя в качестве обработчика событий RowUpdating, которые генерируются объектом DbDataAdapter, указанным в этом свойстве.
Когда создается новый экземпляр объекта DbCommandBuilder, то все связанные с ним объекты DbDataAdapter освобождаются.
Декларация
public DbDataAdapter DataAdapter {get; set;};
Значение свойства
Объект DbDataAdapter.
Исключения
Отсутствуют.
Пример
// C#
using System;
using System.Data;
using System.Data.Common;
class CommandBuilderSample
{
static void Main()
{
// Создание фабрики классов провайдера
DbProviderFactory factory =
DbProviderFactories.GetFactory("System.Data.LinterClient");
// Соединение с БД
DbConnection con = factory.CreateConnection();
con.ConnectionString = "User ID=SYSTEM;Password=MANAGER8";
con.Open();
DbCommand cmd = factory.CreateCommand();
cmd.CommandText = "select MAKE, PERSONID from AUTO";
cmd.Connection = con;
DbDataAdapter adapter = factory.CreateDataAdapter();
adapter.SelectCommand = cmd;
// Получение данных из БД
DataTable dt = new DataTable();
adapter.Fill(dt);
// Изменение данных
dt.Rows[0][0] = DateTime.Now;
// Связывание объектов DbDataAdapter и DbCommandBuilder
DbCommandBuilder builder = factory.CreateCommandBuilder();
builder.DataAdapter = adapter;
// Обновление данных
adapter.Update(dt);
// Отображение сгенерированного запроса
Console.WriteLine(builder.GetUpdateCommand().CommandText);
// Освобождение ресурсов
builder.Dispose();
// Закрытие подключения к БД
con.Close();
}
}
Результат выполнения примера:
UPDATE "SYSTEM"."AUTO" SET "MAKE" = :param1, "PERSONID" = :param2
WHERE (((:param3 = 1 AND "MAKE" IS NULL) OR ("MAKE" = :param4))
AND ("PERSONID" = :param5))