Выполнить запрос

Компонент выполняет запрос к БД. Его можно использовать:

Рекомендации:

  1. Если работаете с MS SQL, то вместо использования встроенных элементов из группы База данных установите nuget-пакет Primo.Database.SqlServer - в нем есть поддержка именованных аргументов для SQL-запроса (через @Parameter).

  2. Если запрос используется внутри контейнера Присоединиться к БД, то будут использоваться настройки соединения из контейнера. Соответственно, в элементе Выполнить запрос такие свойства, как Строка соединения/Соединение с БД, Тип БД можно не заполнять - настройки в контейнере имеют приоритет.

  3. Если в процессе сначала используется контейнер Присоединиться к БД, в котором нет запросов, а сам запрос находится ниже, вне контейнера, то в нем можно установить быстрое подключение к БД с помощью свойства Строка соединения. Для этого в контейнере нужно сохранить установленное соединение в переменной вывода (свойство Соединение с БД), а затем использовать ее в запросе в свойстве Соединение с БД.

Свойства

Описание общих свойств элемента см. в разделе Свойства элемента. Символ * в названии свойства указывает на обязательность заполнения.

СвойствоТипОписание

База данных:

Соединение с БД

LTools.Database.DatabaseInst

Инстанс соединения с БД. Заполняется, если уже имеется установленное подключение к БД, сохраненное в переменную (см. п.3 рекомендаций). При заполнении этого поля следует оставить пустыми свойства Строка соединения и Тип БД

Строка соединения

String

Тип БД

-

Тип подсоединяемой базы данных. Доступные значения: 1) Ole DB - по умолчанию; 2) Postgre Sql; 3) ODBC

Данные запроса:

Текст запроса*

String

Текст запроса SQL. Пример для Postgre: "SELECT * FROM table1 WHERE column1 = @par1"

Аргументы (конструктор)

String

Аргументы (массив)

LTools.Database.Model.ArgumentsModel

Массив аргументов. Описание аргумента см. в подразделе ниже

Наличие результатов

Boolean

Признак ожидания результатов запроса - поставьте галочку, если запрос должен вернуть в ответ какие-то данные. Например, при "SELECT * FROM table. Если же это запрос типа INSERT TO... или DELETE FROM..., т.е. который не возвращает данные, то галочку ставить не нужно

Таймаут

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 в запросе вместо аргумента нужно указать знак ?. Пример:

"SELECT * FROM table1 WHERE id > ?"

Аргумент будет вставляться в запрос вместо знака ? соответственно заданной позиции. Атрибут имени для них не играет роли.

2. Для Postgre напротив, имя аргумента важно, поскольку в запросе можно использовать именованные аргументы (через @<parameterName>). Пример:

"SELECT * FROM table1 WHERE column1 = @par1"

Во время выполнения команды имя аргумента будет заменено на его значение.

Только код

Пример использования элемента в процессе с типом Только код (Pure code):

LTools.Database.DatabaseApp app = LTools.Database.DatabaseApp.Init(wf, "Provider=SQLOLEDB;Data Source=<servername>;Initial Catalog=<dbname>;Integrated Security=SSPI");
List<List<string>> data = app.Execute("SELECT * FROM Table1", true);
System.Data.DataTable tbl = app.ExecuteQueryTbl("SELECT * FROM Table1");

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

Учебный пример процесса с элементом Выполнить запрос можно найти здесь. Процесс имеет название Postgre.ltw, тип процесса - Последовательность.

Last updated