Creatio development guide
PDF
Описание платформы
Это документация Creatio версии 7.15.0. Мы рекомендуем использовать новую версию документации.

Построение запросов на добавление данных. Класс Insert

Glossary Item Box

Общие сведения

Класс Terrasoft.Core.DB.Insert предназначен для построения запросов на добавление записей в таблицы базы данных Creatio. В результате создания и конфигурирования экземпляра этого класса будет построен запрос в базу данных приложения в виде SQL-выражения INSERT. В результате выполнения запроса возвращается количество задействованных запросом записей.

ВАЖНО

При работе с классом Insert на добавленные записи не применяются права доступа по умолчанию. Пользовательское соединение используется только для доступа к таблице базы данных.

Класс Terrasoft.Core.DB.Insert

К СВЕДЕНИЮ

Полный перечень методов и свойств класса Insert, его родительских классов, а также реализуемых им интерфейсов, можно найти в документации ".NET библиотеки классов ядра платформы".

Конструкторы

  • public Insert(UserConnection userConnection) — создает экземпляр класса с указанным UserConnection.
  • public Insert(Insert source) — создает экземпляр класса, являющийся клоном экземпляра, переданного в качестве аргумента.

Свойства

Табл. 1. — Основные свойства класса Insert

Свойство Тип Описание
UserConnection Terrasoft.Core.UserConnection Пользовательское подключение, используемое при запросе.
Source Terrasoft.Core.DB.ModifyQuerySource Источник данных
Parameters Terrasoft.Core.DB.QueryParameterCollection Коллекция параметров запроса.
HasParameters bool Определяет, имеет ли запрос параметры.
BuildParametersAsValue bool Определяет, добавлять ли параметры запроса в текст запроса как значения.
ColumnValues Terrasoft.Core.DB.ModifyQueryColumnValueCollection Коллекция значений колонок запроса.
ColumnValuesCollection List<ModifyQueryColumnValueCollection> Коллекция значений колонок для множественного добавления записей (см. "Функциональность многострочного добавления данных. Класс Insert").

Методы

Табл. 2. — Основные методы класса Insert

Методы Описание
string GetSqlText() Возвращает SQL-текст запроса.
void BuildSqlText(StringBuilder sb) Формирует текст запроса при помощи экземпляра StringBuilder.
void ResetCachedSqlText() Очищает кэшированный текст запроса.
QueryParameterCollection GetUsingParameters() Возвращает коллекцию параметров, используемых запросом.
void ResetParameters() Очищает коллекцию параметров запроса.
void SetParameterValue(string name, object value)

Устанавливает значение для параметра запроса.

Параметры:

  • name — название параметра;
  • value — значение.

void InitializeParameters()

Инициализирует коллекцию параметров запроса.

int Execute()

Выполняет запрос. Возвращает количество задействованных запросом записей.

int Execute(DBExecutor dbExecutor)

Выполняет запрос, используя экземпляр DBExecutor. Возвращает количество задействованных запросом записей.

Insert Into(string schemaName)

Insert Into(ModifyQuerySource source)

Добавляет в текущий запрос источник данных.

Параметры:

  • schemaName — название схемы;
  • source — источник данных.

Insert Set(string sourceColumnAlias, Select subSelect)

Insert Set(string sourceColumnAlias, Query subSelectQuery)

Insert Set(string sourceColumnAlias, QueryColumnExpression columnExpression)

Insert Set(string sourceColumnAlias, QueryParameter parameter)

Добавляет в текущий запрос предложение SET для присвоения колонке переданного выражения или параметра. Возвращает текущий экземпляр Insert.

Параметры:

  • sourceColumnAlias — псевдоним колонки;
  • subSelect — подзапрос на выборку;
  • subSelectQuery — подзапрос;
  • columnExpression — выражение колонки;
  • parameter — параметр запроса.
Insert Values() Инициализирует значения для множественного добавления записей. (см. "Функциональность многострочного добавления данных. Класс Insert")

Примеры использования

Пакет с конфигурационным веб-сервисом, реализующим приведенные ниже примеры, можно скачать по ссылке.

ВАЖНО

Код в примерах показывает различные способы передачи параметров в запрос. При разработке проекта учитывайте, что в метод Column.Const не следует передавать параметры, контролируемые пользователем, так как это может привести к потенциальным sql-инъекциям.

Пример 1

Получить текст SQL запроса.

public string GetSqlTextExample(string ContactName)
{
    var result = "";
    var id = Guid.NewGuid();
    var ins = new Insert(UserConnection)
        .Into("Contact")
        .Set("Id", Column.Parameter(id))
        .Set("Name", Column.Parameter(ContactName));
    result = ins.GetSqlText();
    return result;
}

Пример 2

Добавить контакт с указанным именем.

public string InsertContact(string contactName)
{
    contactName = contactName ?? "Unknown contact";
    var ins = new Insert(UserConnection)
        .Into("Contact")
        .Set("Name", Column.Parameter(contactName));
    var affectedRows = ins.Execute();
    var result = $"Inserted new contact with name '{contactName}'. {affectedRows} rows affected";
    return result;
}

Пример 3

Добавить город с указанным названием, привязав его к указанной стране.

public string InsertCity(string city, string country)
{
    city = city ?? "unknown city";
    country = country ?? "unknown country";

    var ins = new Insert(UserConnection)
        .Into("City")
        .Set("Name", Column.Parameter(city))
        .Set("CountryId",
            new Select(UserConnection)
                    .Top(1)
                    .Column("Id")
                .From("Country")
                .Where("Name")
                    .IsEqual(Column.Parameter(country)));
    var affectedRows = ins.Execute();
    var result = $"Inserted new city with name '{city}' located in '{country}'. {affectedRows} rows affected";
    return result;
}

К СВЕДЕНИЮ

Примеры добавления множественных записей можно найти в статье "Функциональность многострочного добавления данных. Класс Insert".

© Terrasoft 2002-2020.

Был ли данный материал полезен?

Как можно улучшить эту статью?