Справочник MQL5Работа с базами данных 

Работа с базами данных

Функции для работы с базами данных используют популярный и простой в работе движок SQLite. Удобством данного движка является то, что вся база данных находится в единственном файле на жестком диске на компьютере пользователя.

С помощью этих функций легко создавать таблицы, добавлять в них данные, производить модификации и делать выборки простыми SQL-запросами:

  • получение торговой истории и котировок из любых форматов,
  • сохранение результатов оптимизации и тестирования,
  • подготовка и обмен данными с другими пакетами анализа,
  • хранение настроек и состояния MQL5-программ.

Функции для работы с базами позволяют заменить наиболее повторяющиеся операции по обработке больших массивов данных на SQL-запросы, что позволит во многих случаях вместо программирования сложных циклов и сравнений использовать вызовы DatabaseExecute/DatabasePrepare. Для удобного получения результатов запроса в готовую структуру используйте функцию DatabaseReadBind, которая позволит прочитать сразу все поля записи за один вызов.

Для ускорения операций чтения, записи и модификации базу данных можно открывать/создавать в оперативной памяти с флагом DATABASE_OPEN_MEMORY, но при этом такая база будет доступна только данной конкретной программе и ни с кем не разделяется. При работе с базами данных, которые находятся на жестком диске, необходимо обертывать массовые вставки/изменения данных в транзакции с помощью DatabaseTransactionBegin/DatabaseTransactionCommit/DatabaseTransactionRollback, что дает ускорение в сотни раз.

Для того чтобы начать работать с данными функциями, достаточно прочитать статью SQLite: нативная работа с базами данных на SQL в MQL5.

Функция

Действие

DatabaseOpen

Открывает или создаёт базу данных в указанном файле

DatabaseClose

Закрывает базу данных

DatabaseImport

Импортирует в таблицу данные из файла

DatabaseExport

Экспортирует таблицу или результат выполнения SQL-запроса в CSV-файл

DatabasePrint

Печатает таблицу или результат выполнения SQL-запроса в журнал экспертов

DatabaseTableExists

Проверяет наличие таблицы в базе данных

DatabaseExecute

Исполняет запрос к указанной базе данных

DatabasePrepare

Создает хендл запроса, который затем может быть исполнен с помощью DatabaseRead()

DatabaseReset

Сбрасывает запрос в начальное состояние, как после вызова DatabasePrepare()

DatabaseBind

Устанавливает значение параметра в запросе

DatabaseBindArray

Устанавливает массив в качестве значения параметра

DatabaseRead

Выполняет переход к следующей записи в результате запроса

DatabaseReadBind

Выполняет переход к следующей записи и читает из неё данные в структуру

DatabaseFinalize

Удаляет запрос, созданный в DatabasePrepare()

DatabaseTransactionBegin

Начинает выполнение транзакции

DatabaseTransactionCommit

Завершает выполнение транзакции

DatabaseTransactionRollback

Выполняет откат транзакций

DatabaseColumnsCount

Получает количество полей в запросе

DatabaseColumnName

Получает имя поля по номеру

DatabaseColumnType

Получает тип поля по номеру

DatabaseColumnSize

Получает размер поля в байтах

DatabaseColumnText

Получает из текущей записи значение поля в виде строки

DatabaseColumnInteger

Получает из текущей записи значение типа int

DatabaseColumnLong

Получает из текущей записи значение типа long

DatabaseColumnDouble

Получает из текущей записи значение типа double

DatabaseColumnBlob

Получает из текущей записи значение поля в виде массива