Поиск публикаций
Работа с Базой данных
Содержание
Открытие соединения
бд.открытьСинх(драйвер, имя, параметры)
Устанавливает синхронное соединение с базой данных. Выполняется немедленно, блокируя выполнение скрипта до успешного подключения или ошибки.
бд.открытьСинх("QSQLITE", "test_mem", { databaseName: ":memory:" });
Выполнение запроса (без результата)
бд.выполнитьСинх(sql, параметры)
Выполняет SQL-запрос, не возвращающий набор данных (например, INSERT, UPDATE, DELETE, CREATE TABLE).
бд.выполнитьСинх("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)", []); бд.выполнитьСинх("INSERT INTO users (name) VALUES (?)", ['Иван']);
Выполнение запроса (с результатом)
бд.запросСинх(sql, параметры)
Выполняет SQL-запрос, возвращающий набор данных (например, SELECT). Возвращает массив записей.
$данные = бд.запросСинх("SELECT * FROM users", []); для каждого ($запись из $данные) { вывод($запись.name); }
Закрытие соединения
бд.закрытьСинх()
Закрывает текущее соединение с базой данных. Все несохранённые изменения фиксируются (автоматический коммит).
бд.закрытьСинх();Объект результата запроса
Результат, возвращаемый запросСинх, представляет собой массив (список) записей. Каждая запись — это объект, поля которого соответствуют столбцам результата.
- Доступ к полям:
$запись.имя_колонки - Длина массива:
массивы.длина($результат)или$результат.длина(в зависимости от реализации). В тесте используется$данные.длина, что предполагает свойстводлинау массива. - Если запрос не вернул строк, возвращается пустой массив (длина 0).
name, а не NAME).Поддерживаемые драйверы
Модуль «бд» основан на фреймворке Qt SQL, поэтому поддерживаются все драйверы, доступные в вашей сборке Qt. Наиболее часто используемые:
- QSQLITE — SQLite (встроенная БД, файл или
:memory:) - QMYSQL / QMARIADB — MySQL / MariaDB
- QPSQL — PostgreSQL
- QODBC — ODBC (для подключения к MS SQL Server и другим)
- QOCI — Oracle
Для использования драйвера, отличного от SQLite, убедитесь, что соответствующие плагины Qt установлены и доступны в вашей системе.
Полный пример
Ниже приведён скрипт, демонстрирующий все основные операции модуля «бд» (на основе тестового скрипта).
// ============================================================ // Пример работы с базой данных (SQLite в памяти) // ============================================================ попытка { // 1. Открыть соединение бд.открытьСинх("QSQLITE", "test_mem", { databaseName: ":memory:" }); вывод("Соединение открыто\n"); // 2. Создать таблицу бд.выполнитьСинх("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)", []); вывод("Таблица создана\n"); // 3. Вставить данные $вставка = бд.выполнитьСинх("INSERT INTO users (name) VALUES (?)", ['Иван']); вывод("Добавлено строк: " + строка($вставка) + "\n"); // 4. Выполнить запрос с результатом $данные = бд.запросСинх("SELECT * FROM users", []); вывод("Найдено записей: " + строка($данные.длина) + "\n"); для каждого ($строка из $данные) { вывод(" id=" + строка($строка.id) + ", name=" + $строка.name + "\n"); } // 5. Закрыть соединение бд.закрытьСинх(); вывод("Соединение закрыто\n"); } ловушка ($ошибка) { вывод("Ошибка: " + строка($ошибка) + "\n"); }