Изменение данных. Класс Update
Glossary Item Box
Общие сведения
Класс Terrasoft.Core.DB.Update предназначен для построения запросов на изменение записей в таблице базы данных Creatio. В результате создания и конфигурирования экземпляра этого класса будет построен запрос базу данных приложения в виде SQL-выражения UPDATE.
Класс Terrasoft.Core.DB.Update
ВАЖНО
НА ЗАМЕТКУ
Полный перечень методов и свойств класса Update, его родительских классов, а также реализуемых им интерфейсов, можно найти в документации ".NET библиотеки классов ядра платформы".
Конструкторы
- public Update(UserConnection userConnection) — создает экземпляр класса, используя UserConnection.
- public Update(UserConnection userConnection, string schemaName) — создает экземпляр класса для схемы с указанным названием, используя UserConnection.
- public Update(UserConnection userConnection, ModifyQuerySource source) — создает экземпляр класса для указанного источника данных, используя UserConnection.
- public Update(Insert source) — создает экземпляр класса, являющийся клоном экземпляра, переданного в качестве аргумента.
Свойства
Табл. 1. — Основные свойства класса
Свойство | Тип | Описание |
---|---|---|
UserConnection | Terrasoft.Core.UserConnection | Пользовательское подключение, используемое при выполнении запроса. |
Condition | Terrasoft.Core.DB.QueryCondition | Условие выражения Where запроса. |
HasCondition | bool | Определяет наличие выражения Where в запросе. |
Source | Terrasoft.Core.DB.ModifyQuerySource | Источник данных запроса. |
ColumnValues | Terrasoft.Core.DB.ModifyQueryColumnValueCollection | Коллекция значений колонок запроса. |
Методы
Табл. 2. — Основные методы класса
Методы | Описание | |
---|---|---|
string GetSqlText() | Возвращает SQL-текст запроса. | |
void BuildSqlText(StringBuilder sb) | Формирует текст запроса при помощи экземпляра StringBuilder. | |
void ResetCachedSqlText() | Очищает закэшированный текст запроса. | |
QueryParameterCollection GetUsingParameters() | Возвращает коллекцию параметров, используемых запросом. | |
int Execute() |
Выполняет запрос. Возвращает количество задействованных запросом записей. | |
int Execute(DBExecutor dbExecutor) |
Выполняет запрос, используя экземпляр DBExecutor. Возвращает количество задействованных запросом записей. | |
QueryCondition Where() QueryCondition Where(string sourceColumnAlias) QueryCondition Where(string sourceAlias, string sourceColumnAlias) QueryCondition Where(Select subSelect) QueryCondition Where(Query subSelectQuery) QueryCondition Where(QueryColumnExpression columnExpression) Query Where(QueryCondition condition) |
Добавляет к текущему запросу начальное условие. Параметры:
|
|
QueryCondition And() QueryCondition And(string sourceColumnAlias) QueryCondition And(string sourceAlias, string sourceColumnAlias) QueryCondition And(Select subSelect) QueryCondition And(Query subSelectQuery) QueryCondition And(QueryParameter parameter) QueryCondition And(QueryColumnExpression columnExpression) Query And(QueryCondition condition) |
К текущему условию запроса добавляет условие (предикат), используя логическую операцию И. Параметры:
|
|
QueryCondition Or() QueryCondition Or(string sourceColumnAlias) QueryCondition Or(string sourceAlias, string sourceColumnAlias) QueryCondition Or(Select subSelect) QueryCondition Or(Query subSelectQuery) QueryCondition Or(QueryParameter parameter) QueryCondition Or(QueryColumnExpression columnExpression) Query Or(QueryCondition condition) |
К текущему условию запроса добавляет условие (предикат), используя логическую операцию ИЛИ. Параметры:
|
|
Update Set(string sourceColumnAlias, Select subSelect) Update Set(string sourceColumnAlias, Query subSelectQuery) Update Set(string sourceColumnAlias, QueryColumnExpression columnExpression) Update Set(string sourceColumnAlias, QueryParameter parameter) |
Добавляет в текущий запрос предложение SET для присвоения колонке переданного выражения или параметра. Возвращает текущий экземпляр Update. Параметры:
|
Примеры использования
Пакет с конфигурационным веб-сервисом, реализующим приведенные ниже примеры, можно скачать по ссылке.
ВАЖНО
В большинстве случаев запрос на изменение должен содержать условие Where, уточняющее какие именно записи необходимо поменять. Иначе будут изменены все записи.
Пример 1
Получить текст SQL запроса.
public string GetSqlTextExample(string oldName, string newName) { var result = ""; var update = new Update(UserConnection, "Contact") .Set("Name", Column.Parameter(newName)) .Where("Name").IsEqual(Column.Parameter(oldName)); result = update.GetSqlText(); return result; }
Пример 2
Изменить имя контакта на новое.
public string ChangeContactName(string oldName, string newName) { var update = new Update(UserConnection, "Contact") .Set("Name", Column.Parameter(newName)) .Where ("Name").IsEqual(Column.Parameter(oldName)); var cnt = update.Execute(); return $"Contacts {oldName} changed to {newName}. {cnt} rows affected."; }
Пример 3
Для всех существующих контактов поменять пользователя, изменившего запись, на указанного.
public string ChangeAllContactModifiedBy(string Name) { var update = new Update(UserConnection, "Contact") .Set("ModifiedById", new Select(UserConnection).Top(1) .Column("Id") .From("Contact") .Where("Name").IsEqual(Column.Parameter(Name))); var cnt = update.Execute(); return $"All contacts are changed by {Name} now. {cnt} rows affected."; }
К СВЕДЕНИЮ
В этом примере условие Where относится к запросу Select. Запрос Update не содержит условия Where, т. к. необходимо изменить все записи.