Выполнить запрос
Компонент выполняет запрос к БД. Его можно использовать:
внутри контейнера Присоединиться к БД;
автономно - если другие действия с БД не предполагаются.
Рекомендации:
Если работаете с MS SQL, то вместо использования встроенных элементов из группы База данных установите nuget-пакет Primo.Database.SqlServer - в нем есть поддержка именованных аргументов для SQL-запроса (через @Parameter).
Если запрос используется внутри контейнера Присоединиться к БД, то будут использоваться настройки соединения из контейнера. Соответственно, в элементе Выполнить запрос такие свойства, как Строка соединения/Соединение с БД, Тип БД можно не заполнять - настройки в контейнере имеют приоритет.
Если в процессе сначала используется контейнер Присоединиться к БД, в котором нет запросов, а сам запрос находится ниже, вне контейнера, то в нем можно установить быстрое подключение к БД с помощью свойства Строка соединения. Для этого в контейнере нужно сохранить установленное соединение в переменной вывода (свойство Соединение с БД), а затем использовать ее в запросе в свойстве Соединение с БД.
Свойства
Описание общих свойств элемента см. в разделе Свойства элемента.
Символ *
в названии свойства указывает на обязательность заполнения.
Свойство | Тип | Описание |
---|---|---|
База данных: | ||
Соединение с БД | LTools.Database.DatabaseInst | Инстанс соединения с БД. Заполняется, если уже имеется установленное подключение к БД, сохраненное в переменную (см. п.3 рекомендаций). При заполнении этого поля следует оставить пустыми свойства Строка соединения и Тип БД |
Строка соединения | String | |
Тип БД | - | Тип подсоединяемой базы данных. Доступные значения: 1) Ole DB - по умолчанию; 2) Postgre Sql; 3) ODBC |
Данные запроса: | ||
Текст запроса* | String | Текст запроса SQL. Пример для Postgre: |
Аргументы (конструктор) | String | |
Аргументы (массив) | LTools.Database.Model.ArgumentsModel | Массив аргументов. Описание аргумента см. в подразделе ниже |
Наличие результатов | Boolean | Признак ожидания результатов запроса - поставьте галочку, если запрос должен вернуть в ответ какие-то данные. Например, при |
Таймаут | Int32 | Таймаут запроса в миллисекундах. По умолчанию 10000 мс. Верхнее значение ограничено типом данных |
Вывод: | ||
Кол-во | Int32 | Количество обработанных строк |
Переменная (массив) | List<List<string>> | Переменная для сохранения результатов запроса в массиве |
Переменная (таблица) | Переменная для сохранения результатов запроса в Datatable |
Окно мастера создания строки
Пример мастера для Ole DB:
Пример мастера для PostgreSQL:
После нажатия кнопки OK строка соединения будет записана в соответствующее свойство.
Аргумент запроса
LTools.Database.Model.ArgumentsModel - это массив аргументов (Args).
Массив состоит из объектов LTools.Database.Model.ArgumentsModelItem - это аргумент запроса. Атрибуты:
Position - порядковый номер аргумента. Отсчет начинается с 0 (int);
Name - наименование аргумента (String);
Script - значение аргумента (Object).
‼️ Принцип использования аргументов зависит от типа БД:
1. Для Ole DB и ODBC в запросе вместо аргумента нужно указать знак ?
. Пример:
Аргумент будет вставляться в запрос вместо знака ?
соответственно заданной позиции. Атрибут имени для них не играет роли.
2. Для Postgre напротив, имя аргумента важно, поскольку в запросе можно использовать именованные аргументы (через @<parameterName>
). Пример:
Во время выполнения команды имя аргумента будет заменено на его значение.
Только код
Пример использования элемента в процессе с типом Только код (Pure code):
Пример использования
Учебный пример процесса с элементом Выполнить запрос можно найти здесь. Процесс имеет название Postgre.ltw
, тип процесса - Последовательность.
Last updated