CreateCommandBuilder
Метод создает экземпляр класса LinterDbCommandBuilder (построитель команд), унаследованный от абстрактного класса DbCommandBuilder.
Класс LinterDbCommandBuilder автоматически генерирует для каждой таблицы, задействованной в наборе данных (DataSet) необходимые SQL-операторы для синхронизации этих изменений с БД.
Синтаксис
public override DbCommandBuilder CreateCommandBuilder();
Возвращаемое значение
Объект LinterDbCommandBuilder типа System.Data.LinterClient.LinterDbCommandBuilder.
Исключения
Отсутствуют.
Пример
// C#
using System;
using System.Data;
using System.Data.Common;
class CreateCommandBuilderSample
{
static void Main()
{
// Создание фабрики классов провайдера
DbProviderFactory factory =
DbProviderFactories.GetFactory("System.Data.LinterClient");
// Соединение с БД
DbConnection con = factory.CreateConnection();
con.ConnectionString = "User ID=SYSTEM;Password=MANAGER8;Data Source=LOCAL";
con.Open();
DbCommand cmd = factory.CreateCommand();
cmd.CommandText = "select * from auto";
cmd.Connection = con;
DbDataAdapter adapter = factory.CreateDataAdapter();
adapter.SelectCommand = cmd;
// Связывание объектов DbDataAdapter и DbCommandBuilder
// Объект DbDataAdapter не создает автоматически SQL-операторы, необходимые для
// согласования изменений, внесенных в объект DataSet. Однако, если задано
// свойство SelectCommand объекта DbDataAdapter, то можно создать объект
// DbCommandBuilder, который будет автоматически создавать SQL-операторы для
// однотабличных обновлений. В этом случае необходимо установить свойство
// DataAdapter класса DbCommandBuilder чтобы объект DbCommandBuilder
// зарегистрировал себя в качестве слушателя для события RowUpdating.
// Одновременно можно связать друг с другом только один объект DbDataAdapter или
// DbCommandBuilder.
DbCommandBuilder builder = factory.CreateCommandBuilder();
builder.DataAdapter = adapter;
// Изменение свойства SelectCommand
// Для создания операторов INSERT, UPDATE или DELETE объект DbCommandBuilder
// использует свойство SelectCommand для автоматического извлечения нужного
// набора метаданных. Если изменить свойство SelectCommand после получения
// метаданных (например, после первого обновления), необходимо обновить
// метаданные путем вызова метода RefreshSchema. Кроме того, свойство
// SelectCommand должно возвращать по крайней мере один первичный ключ или
// уникальный столбец. Если таковые отсутствуют, то создается исключение
// InvalidOperationException и команды не создаются.
cmd.CommandText = "select * from person";
// Обновление схемы
builder.RefreshSchema();
// Освобождение ресурсов
// Если вызывается метод Dispose, объект DbCommandBuilder теряет связь с объектом
// DbDataAdapter и созданные команды в дальнейшем не используются.
builder.Dispose();
// Закрытие подключения к БД
con.Close();
}
}