Использование SQL запросов в сценариях
Для работы с SQL-базой используются стандартные классы C#.
В статье приведен пример получения списка пользователей с помощью SQL-запроса.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы до 3.15.38 включительно.
Примечание
Следует обратить внимание, что необходимо использовать конструкцию using (…Reader reader = …) для предотвращения утечки памяти.
Для работы сценария необходима сборка:
System.Data
Пространства имен:
using System.Data.SqlClient;
Текст сценария:
string ConString = "Server=Server_name;Database=name_base;Trusted_Connection=True;"; //строка подключения к БД с использованием Windows авторизации
using (SqlConnection connection = new SqlConnection(ConString))
{
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = "select UserName from [User]";//текст запроса
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());//вывод результата на консоль
}
}
}
}
Для работы с базой данных на сервере Firebird необходимо разграничить два случая: запрос выполняется к базе, на которой запущен сервер системы, либо к базе, с которой сейчас не выполняются какие-либо работы.
Пример работы с "активной базой данных":
Для работы сценария необходима сборка:
System.Data
Пространства имен:
using EleWise.ELMA.Services;
using EleWise.ELMA.Runtime.Db.Migrator.Framework;
Текст сценария:
var transformationProvider = Locator.GetServiceNotNull<ITransformationProvider>();//инициализируем службу
using (var reader = transformationProvider.ExecuteQuery(@"SELECT ""USERNAME"" FROM ""User"""))//указываем SQL-запрос для выполнения
{
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());//вывод результата на консоль
}
}
Для работы с "неактивной базой данных" необходимо инициализировать подключение к ней.
Для работы необходима дополнительная сборка:
using FirebirdSql.Data.FirebirdClient;
Сценарий будет выглядеть следующим образом:
FbConnection fb;
FbConnectionStringBuilder fb_con = new FbConnectionStringBuilder();
fb_con.Charset = "WIN1251"; //используемая кодировка
fb_con.UserID = "sysdba"; //логин
fb_con.Password = "masterkey"; //пароль
fb_con.DataSource = "localhost"; // Указать, на каком компьютере развернут сервер Firebird
fb_con.Database = @"C:\ELMA3-Express\UserConfig\ELMA3-EXPRESS.FDB"; //путь к файлу базы данных
fb_con.ServerType = 0; //указываем тип сервера
fb = new FbConnection(fb_con.ToString());//создаем подключение
fb.Open(); //открываем БД
FbTransaction transaction = fb.BeginTransaction();//
FbCommand command = new FbCommand(@"SELECT ""USERNAME"" FROM ""User""", fb, transaction);//Указываем SQL-запрос для выполнения
using (FbDataReader reader = command.ExecuteReader()) //Инициализируем Reader
{
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());//Выводим результат на консоль
}
}
reader.Close();//закрываем подключение
fb.Close();