GetInsertCommand(Boolean)
Метод предоставляет автоматически сгенерированный для выполнения операций добавления записей в таблицу БД параметризованный объект DbCommand.
Синтаксис
public DbCommand GetInsertCommand(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; // Отображение автоматически сгенерированных команд INSERT Console.WriteLine("useColumnsForParameterNames = false"); Console.WriteLine(builder.GetInsertCommand(false).CommandText); Console.WriteLine(); Console.WriteLine("useColumnsForParameterNames = true"); Console.WriteLine(builder.GetInsertCommand(true).CommandText); Console.WriteLine(); // Освобождение ресурсов builder.Dispose(); // Закрытие подключения к БД con.Close(); } } Результат выполнения примера: useColumnsForParameterNames = false INSERT INTO "SYSTEM"."AUTO" ("MAKE", "PERSONID") VALUES (:param1, :param2) useColumnsForParameterNames = true INSERT INTO "SYSTEM"."AUTO" ("MAKE", "PERSONID") VALUES (:MAKE, :PERSONID)