Построение запросов на добавление данных. Класс 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) |
Устанавливает значение для параметра запроса. Параметры:
|
void InitializeParameters() |
Инициализирует коллекцию параметров запроса. |
int Execute() |
Выполняет запрос. Возвращает количество задействованных запросом записей. |
int Execute(DBExecutor dbExecutor) |
Выполняет запрос, используя экземпляр DBExecutor. Возвращает количество задействованных запросом записей. |
Insert Into(string schemaName) Insert Into(ModifyQuerySource 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. Параметры:
|
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".