Для коннектора sqlite позволяет работать с базой im memory.
Имеется возможность писать запросы на выборку данных, использовать параметры в запросах.
Реализована возможность выполнения запросов DDL и DML.
Если не подходит сборка sqlite, выложенная в release - следует скачать подходящую с официального сайта sqlite
Примечание: УстановитьПараметр принимает типы: Строка, Число, Дата, Булево
Исходные коды проекта размещены на github: https://github.com/ret-Phoenix/oscript-sql
Примеры использования можно найти в тестах: https://github.com/ret-Phoenix/oscript-sql/tree/master/tests
Установка
Варианты:
- opm install sql
- https://github.com/ret-Phoenix/oscript-sql/releases - скачать последний релиз: opm install <путь к скаченному файлу>
- https://github.com/ret-Phoenix/oscript-sql/releases - скачать последний релиз, распаковать содержимое папки content в oscript/kibs/sql
Пример работы с sqlite in memory
#Использовать sql
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.sqlite;
Соединение.ИмяБазы = ":memory:";
Соединение.Открыть();
Запрос = Новый Запрос();
Запрос.УстановитьСоединение(Соединение);
Запрос.Текст = "Create table users (id integer, name text)";
Запрос.ВыполнитьКоманду();
Запрос.Текст = "insert into users (id, name) values(1, @name)";
Запрос.УстановитьПараметр("name", "Сергей");
Запрос.ВыполнитьКоманду();
Запрос2 = Новый Запрос();
Запрос2.УстановитьСоединение(Соединение);
Запрос2.Текст = "select * from users where id = @id";
Запрос2.УстановитьПараметр("id", 1);
ТЗ = Запрос2.Выполнить().Выгрузить();
Для каждого Стр Из ТЗ Цикл
Сообщить("Имя: " + Стр.Name + " (" + Стр.id + ")")
КонецЦикла;
Пример работы с MS SQL Server
#Использовать sql
Процедура Тест_Должен_ДолженИзменитьСтроки() Экспорт
СтрокаСоединения = ПолучитьТекстИзФайла("fixtures\ms-sql-server-con-str.txt");
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.MSSQLServer;
Соединение.СтрокаСоединения = СтрокаСоединения;
Соединение.Открыть();
ЗапросВставка = Новый Запрос();
ЗапросВставка.УстановитьСоединение(Соединение);
ЗапросВставка.Текст = "Create table #users (id integer, name varchar(50))";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "insert into #users (id, name) values(1, @name)";
ЗапросВставка.УстановитьПараметр("name", "Сергей");
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "update #users set name = @name";
ЗапросВставка.УстановитьПараметр("name", "Сергей Александрович");
Результат = ЗапросВставка.ВыполнитьКоманду();
Соединение.Закрыть();
Ожидаем.Что(Результат).Равно(1);
КонецПроцедуры
Пример работы с MySQL
Процедура Тест_Должен_ПроверитьГенерациюСтрокиСоединения() Экспорт
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.MySQL;
Соединение.Сервер = "localhost";
Соединение.ИмяПользователя = "root";
Соединение.ИмяБазы = "test";
Соединение.Пароль = "testpassword";
Соединение.Порт = 3306;
Попытка
/// Заведомо известно падение при открытии.
/// Строка соединения генерируется только при открытии
Соединение.Открыть();
Исключение
Ожидаем.Что(Соединение.СтрокаСоединения).Равно("server=localhost;user=root;password=testpassword;database=test;port=3306;");
КонецПопытки;
КонецПроцедуры
Процедура Тест_Должен_ДолженПолучитьВыборку() Экспорт
Соединение = Новый Соединение();
Соединение.ТипСУБД = Соединение.ТипыСУБД.MySQL;
Соединение.СтрокаСоединения = мСтрокаСоединения;
Соединение.Открыть();
ЗапросВставка = Новый Запрос();
ЗапросВставка.УстановитьСоединение(Соединение);
ЗапросВставка.Текст = "DROP TABLE IF EXISTS users";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "Create table users (id integer, name varchar(50))";
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Текст = "insert into users (name) values(@name)";
ЗапросВставка.УстановитьПараметр("name", "Сергей");
ЗапросВставка.ВыполнитьКоманду();
ЗапросВставка.Параметры.Очистить();
ЗапросВставка.Текст = "select * from users";
ТЗ = ЗапросВставка.Выполнить().Выгрузить();
Ожидаем.Что(ТЗ.Количество()).Равно(1);
Соединение.Закрыть();
КонецПроцедуры
API
Соединение / Connection
Соединение с БД. Используется для указания источника данных объекта Запрос.
Свойства
ТипыСУБД / DBTypes
Доступ: Чтение
Тип значения: ТипСУБД
Типы поддерживаемых СУБД
ТипСУБД / DBType
Доступ: Чтение/Запись
Тип значения: ТипСУБД
Тип подключенной СУБД
Порт / Port
Доступ: Чтение/Запись
Тип значения: Число
Порт подключения
Сервер / Server
Доступ: Чтение/Запись
Тип значения: Строка
Имя или IP сервера
ИмяБазы / DbName
Доступ: Чтение/Запись
Тип значения: Строка
Имя базы, в случае с SQLITE - путь к базе
ИмяПользователя / Login
Доступ: Чтение/Запись
Тип значения: Строка
Пользователь под которым происходит подключение. Если СУБД MS SQL и пользователь не указан - используется Windows авторизация.
Пароль / Password
Доступ: Чтение/Запись
Тип значения: Строка
Пароль пользователя
Открыто / IsOpen
Доступ: Чтение
Тип значения: ConnectionState
Статус соединения с БД
СтрокаСоединения / ConnectionString
Доступ: Чтение/Запись
Тип значения: Строка
Подготовленная строка соединения. В случае sqlite аналог ИмяБазы
Методы
Открыть / Open()
Открыть соединение с БД
Возвращаемое значение
Булево
Закрыть / Close()
Закрыть соединение с БД
СоздатьЗапрос / CreateQuery()
Создать запрос с установленным соединением
Возвращаемое значение
Запрос
ТипСУБД / DBType
Тип поддерживаемой СУБД
Свойства
sqlite / sqlite
Доступ: Чтение
MSSQLServer / MSSQLServer
Доступ: Чтение
Запрос / Query
Предназначен для выполнения запросов к базе данных.
Свойства
Параметры / Parameters
Доступ: Чтение
Текст / Text
Доступ: Чтение/Запись
Тип значения: Строка
Содержит исходный текст выполняемого запроса.
Таймаут / Timeout
Доступ: Чтение/Запись
Тип значения: Число
Время в секундах, в течение которого должно происходить ожидание выполнения команды. По умолчанию используется значение 30 секунд.
Методы
Выполнить / Execute()
Выполняет запрос к базе данных.
Возвращаемое значение
РезультатЗапроса
ВыполнитьКоманду / ExecuteCommand()
Выполняет запрос на модификацию к базе данных.
Возвращаемое значение
Число - Число обработанных строк.
УстановитьПараметр / SetParameter()
Устанавливает параметр запроса. Параметры доступны для обращения в тексте запроса. С помощью этого метода можно передавать переменные в запрос, например, для использования в условиях запроса. ВАЖНО: В запросе имя параметра указывается с использованием '@'.
Пример:
Запрос.Текст = "select * from mytable where category_id = @category_id";
Запрос.УстановитьПараметр("category_id", 1);
Параметры
-
ParametrName: Строка - Имя параметра
-
ParametrValue: Произвольный - Значение параметра
УстановитьСоединение / SetConnection()
Установка соединения с БД.
Параметры
- connector: Соединение - объект соединение с БД
РезультатЗапроса / QueryResult
Содержит результат выполнения запроса. Предназначен для хранения и обработки полученных данных.
Методы
Выгрузить / Unload()
Создает таблицу значений и копирует в нее все записи набора.
Возвращаемое значение
ТаблицаЗначений