GetDeleteCommand(Boolean)

Метод предоставляет автоматически сгенерированный для выполнения операций удаления в БД параметризованный объект DbCommand.

Синтаксис
public DbCommand
GetDeleteCommand(bool useColumnsForParameterNames);
      

useColumnsForParameterNames – задает правило именования параметров:

  • true – имена параметров должны совпадать с именами столбцов (а если столбец неименованный, типа select to_char(id) …), то параметр для такого столбца не генерируется;

  • false – имена параметров должны совпадать с их порядковыми номерами в запросе (:p1, :p2 и т. д.).

Значение по умолчанию false.

Для создания параметров с именами столбцов (useColumnsForParameterNames=true) необходимы дополнительные условия:

  • должно быть задано значение свойства ParameterNameMaxLength, возвращаемое методом GetSchema, и присутствующее в коллекции DataSourceInformation; указанная в этом свойстве длина должна быть не меньшее длины сгенерированного имени параметра;

  • сгенерированное имя параметра соответствует критериям, заданным в свойстве ParameterNamePattern, возвращаемом методом GetSchema, и присутствующее в коллекции DataSourceInformation;

  • должно быть задано значение свойства ParameterMarkerFormat, возвращаемое методом GetSchema, и присутствующее в коллекции DataSourceInformation.

Возвращаемое значение

Автоматически созданный объект DbCommand, содержащий параметризованный текст SQL-запроса для удаления строк из таблицы БД.

Исключения

Отсутствуют.

Пример
// 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 = "DataSource=LOCAL;UserID=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;
    // Связывание объектов DbDataAdapter и DbCommandBuilder
    DbCommandBuilder builder = factory.CreateCommandBuilder();
    builder.DataAdapter = adapter;
    // Отображение автоматически сгенерированных команд DELETE
    Console.WriteLine("useColumnsForParameterNames = false");
    Console.WriteLine(builder.GetDeleteCommand(false).CommandText);
    Console.WriteLine();
    builder.RefreshSchema();
    Console.WriteLine("useColumnsForParameterNames = true");
    Console.WriteLine(builder.GetDeleteCommand(true).CommandText);
    Console.WriteLine();
    // Освобождение ресурсов
    builder.Dispose();
    // Закрытие подключения к БД
    con.Close();
  }
}

Результат выполнения примера:

useColumnsForParameterNames = false
DELETE FROM "SYSTEM"."AUTO" WHERE (((:param1 = 1 AND "MAKE" IS NULL)
OR ("MAKE" = :param2)) AND ("PERSONID" = :param3))

useColumnsForParameterNames = true
DELETE FROM "SYSTEM"."AUTO" WHERE (((:IsNull_MAKE = 1 AND "MAKE" IS NULL)
OR ("MAKE" = :Original_MAKE)) AND ("PERSONID" = :Original_PERSONID))