Документация по разработке bpm’online
PDF
Документация по разработке
Описание платформы
Изменение данных. Класс Update

Glossary Item Box

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

Класс Terrasoft.Core.DB.Update предназначен для построения запросов на изменение записей в таблице базы данных bpm'online. В результате создания и конфигурирования экземпляра этого класса будет построен запрос базу данных приложения в виде 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)

Добавляет к текущему запросу начальное условие.

Параметры:

  • sourceColumnAlias — псевдоним колонки, для которой добавляется условие;
  • sourceAlias — псевдоним источника;
  • subSelect — подзапрос выборки данных, для результатов которого добавляется условие;
  • subSelectQuery — подзапрос, для результатов которого добавляется условие;
  • columnExpression — выражение, для результатов которого добавляется условие;
  • 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)

К текущему условию запроса добавляет условие (предикат), используя логическую операцию И.

Параметры:

  • sourceColumnAlias — псевдоним колонки, для которой добавляется предикат;
  • sourceAlias — псевдоним источника;
  • subSelect — подзапрос выборки данных, используемый в качестве предиката;
  • subSelectQuery — подзапрос, используемый в качестве предиката;
  • parameter — параметр, для которого добавляется предикат;
  • columnExpression — выражение, используемое в качестве предиката;
  • 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)

К текущему условию запроса добавляет условие (предикат), используя логическую операцию ИЛИ.

Параметры:

  • sourceColumnAlias — псевдоним колонки, для которой добавляется предикат;
  • sourceAlias — псевдоним источника;
  • subSelect — подзапрос на выборку данных, используемый в качестве предиката;
  • subSelectQuery — подзапрос, используемый в качестве предиката;
  • parameter — параметр, для которого добавляется предикат;
  • columnExpression — выражение, используемое в качестве предиката;
  • 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.

Параметры:

  • sourceColumnAlias — псевдоним колонки;
  • subSelect — подзапрос на выборку;
  • subSelectQuery — подзапрос;
  • columnExpression — выражение колонки;
  • parameter — параметр запроса.

 

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

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

ВАЖНО

В большинстве случаев запрос на изменение должен содержать условие 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, т. к. необходимо изменить все записи.

 

 

 

 

 

 

© Terrasoft 2002-2019.

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

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