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))