Выполнить запрос
Eng: Execute query
.fc3a9bb3.png&w=640&q=75)
Элемент выполняет запрос к базе данных (БД). В сценарии элемент может использоваться:
- внутри контейнера Присоединиться к БД;
- автономно — если другие действия с БД не предполагаются.
Рекомендации:
- Если вы работаете с MS SQL, то вместо использования встроенных элементов из группы База данных установите nuget-пакет Primo.Database.SqlServer — в нем есть поддержка именованных аргументов для SQL-запроса (через @Parameter).
- Если вы поместили запрос в контейнер Присоединиться к БД, то настройки соединения будут взяты из контейнера. Это значит, в элементе Выполнить запрос такие свойства, как Строка соединения, Соединение с БД, Тип БД заполнять не нужно — настройки в контейнере имеют приоритет.
- Если в сценарии вы сначала используете контейнер Присоединиться к БД, а сам запрос поместили ниже, вне контейнера, то в запросе можно указать активное подключение из контейнера. Для этого обратитесь к свойствам контейнера и сохраните активное подключение в переменную (свойство вывода Соединение с БД), а затем используйте эту переменную в элементе Выполнить запрос, в свойстве Соединение с БД.
Свойства
Символ * в названии свойства указывает на обязательность заполнения. Описание общих свойств см. в разделе Свойства элемента.
| Свойство | Тип | Описание | Пример |
|---|---|---|---|
| База данных: | |||
| Соединение с БД | LTools.Database.DatabaseInst | Переменная, содержащая инстанс соединения с БД. Свойство заполняется, если вы хотите использовать ранее установленное и активное подключение к БД (см. п.3 рекомендаций). Если вы заполнили это свойство, оставьте пустыми свойства Строка соединения и Тип БД | |
| Строка соединения | String | Строка соединения, которая будет использована для установки подключения к базе данных. Вид строки зависит от выбранного типа БД и его драйвера. См. подробности для OLE DB и ODBC. Строку можно сформировать автоматически по кнопке | Ole DB:
PostgreSQL: ODBC:
|
| Тип БД | - | Тип базы данных. Нажмите на выпадающий список значений, чтобы выбрать доступный тип: * Ole DB — по умолчанию; * Postgre Sql; * ODBC | Postgre Sql |
| Данные запроса: | |||
| Текст запроса* | String | Текст запроса SQL | Postgre:
|
| Аргументы (конструктор) | String | Аргументы запроса в строковом формате. Строку можно сформировать в окне мастера по кнопке | Результат из мастера: |
| Аргументы (массив) | LTools.Database.Model.ArgumentsModel | Аргументы запроса в виде массива. Описание аргументов см. в подразделе ниже | |
| Наличие результатов | Boolean | Признак ожидания результатов запроса. Поставьте галочку, если запрос должен вернуть в ответ какие-то данные. Например, вы отправили "SELECT * FROM table и в ответе ожидаете данные из таблицы. Если же это запрос типа INSERT TO... или DELETE FROM..., который не возвращает данные, то галочку ставить не нужно | |
| Таймаут | Int32 | Таймаут запроса в секундах | 10000 |
| Вывод: | |||
| Кол-во | Int32 | Количество обработанных строк | |
| Переменная (массив) | List<List<string>> | Переменная для сохранения результатов запроса в массиве | |
| Переменная (таблица) | System.Data.DataTable | Переменная для сохранения результатов запроса в Datatable |
Окно мастера создания строки
🔹 Для ODBC мастер отсутствует.
Свойство Строка соединения имеет кнопку
— при ее нажатии откроется мастер создания строки соединения. Окно мастера будет отличаться для разных БД — убедитесь, что свойство Тип БД заполнено верно.
Пример мастера для Ole DB:
.f5b558e2.png&w=750&q=75)
Пример мастера для PostgreSQL:
.efb410c7.png&w=640&q=75)
После нажатия кнопки 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"Во время выполнения команды имя аргумента будет заменено на его значение.
Пример использования
RPA-проект, демонстрирующий работу элемента, можно найти в нашем публичном репозитории Learning .
- Скачайте архив со всеми обучающими материалами по ссылке: Скачать архив Learning .
- Распакуйте архив и откройте в Студии проект StudioActivities.
- Выберите процесс
StudioActivities/Ru/База данных/Postgre.ltwдля просмотра. Тип процесса — Последовательность.
Только код
Пример использования элемента в процессе с типом Только код (Pure code):
C#
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");