Об этом проекте
# godot-sqlite
Эта обёртка GDExtension делает SQLite3 доступным в Godot 4.0+ без необходимости дополнительной компиляции или изменения скриптов сборки. Поддерживает Mac OS X (универсальная), Linux, Windows, Android (arm64), iOS (arm64) и HTML5 (стабильность зависит от браузера).
## Установка
Установите через Библиотеку ресурсов Godot (найдите 'godot-sqlite') или вручную загрузите файлы сборки с вкладки релизов. Активируйте плагин в Настройках проекта/Плагины. Доступен демонстрационный проект.
## Использование
### Переменные
- **path** (String, по умолчанию="default"): Путь к базе данных, устанавливается перед `open_db()`. Поддерживает `res://` и `user://`.
- **error_message** (String): Понятное сообщение об ошибке от последнего запроса.
- **default_extension** (String, по умолчанию="db"): Автоматически добавляемое расширение, если не указано.
- **foreign_keys** (Boolean, по умолчанию=false): Включить ограничения внешних ключей.
- **read_only** (Boolean, по умолчанию=false): Открыть базу данных только для чтения, что позволяет упаковывать её в PCK.
- **query_result** (Array): Результаты последнего запроса по значению (безопасно для последовательных запросов).
- **query_result_by_reference** (Array): Результаты по ссылке, очищаются и заполняются заново при каждом запросе.
- **last_insert_rowid** (Integer): Открывает доступ к `sqlite3_last_insert_rowid()`.
- **verbosity_level** (Integer, по умолчанию=1): Уровень логирования в консоли (0=тихий, 1=обычный, 2=подробный, 3=очень подробный).
### Методы
- **open_db()** / **close_db()**: Открыть/закрыть соединение с базой данных.
- **query(query_string)**: Выполнить необработанный SQL-запрос.
- **query_with_bindings(query_string, param_bindings)**: Выполнить с безымянной привязкой параметров для предотвращения SQL-инъекций.
- **query_with_named_bindings(query_string, param_bindings)**: Выполнить с именованной привязкой (поддерживает префиксы `:`, `@`, `$`, `?`).
- **create_table(table_name, table_dictionary)**: Создать таблицу с определениями столбцов (data_type, not_null, unique, default, primary_key, auto_increment, foreign_key).
- **drop_table(table_name)**: Удалить таблицу.
- **insert_row(table_name, row_dictionary)** / **insert_rows(table_name, row_array)**: Вставить строки.
- **select_rows(table_name, query_conditions, selected_columns)**: Выбрать строки, возвращает по значению.
- **update_rows(table_name, query_conditions, updated_row_dictionary)**: Обновить строки.
- **delete_rows(table_name, query_conditions)**: Удалить строки.
- **import_from_json(import_path)** / **export_to_json(export_path)**: Импорт/экспорт структуры и содержимого базы данных в формате JSON.
- **import_from_buffer(input_buffer)** / **export_to_buffer()**: Импорт/экспорт в виде буфера в формате JSON (полезно для шифрования).
- **create_function(function_name, function_reference, number_of_arguments)**: Привязать скалярную SQL-функцию.
- **get_autocommit()**: Проверить режим автоподтверждения.
- **compileoption_used(option_name)**: Проверить параметры компиляции (например, FTS5).
- **backup_to(destination_path)** / **restore_from(source_path)**: Резервное копирование/восстановление базы данных.
- **enable_load_extension(onoff)** / **load_extension(extension_path, extension_entry_point)**: Загрузить расширения SQLite.
- **sanitize_identifier(table_or_column_identifier)**: Очистить имена таблиц/столбцов для безопасного использования в запросах.
### Сигналы
- **row_deleted(table_name, rowid)**: Испускается при удалении строки.
- **row_inserted(table_name, rowid)**: Испускается при вставке строки.
- **row_updated(table_name, rowid)**: Испускается при обновлении строки.
## Основные вопросы из FAQ
- **Синтаксические ошибки**: Проверяйте запросы онлайн, используйте функции необработанных запросов и правильно заключайте в кавычки строки с пробелами или запятыми.
- **Динамические имена таблиц/столбцов**: Не могут быть привязаны; вставляйте их непосредственно в строку запроса.
- **Доступ с мобильных устройств/HTML5**: Базы данных только для чтения должны быть упакованы в PCK; для чтения и записи требуется копирование в `user://`.
- **Совместимость с сервером**: Работает с бинарным сервером Godot; для старых версий Linux может потребоваться перекомпиляция.
- **Расширения**: FTS5, математические функции и R*Tree поддерживаются, но требуют перекомпиляции с флагами.
- **Шифрование**: Не поддерживается нативно; используйте буферы импорта/экспорта для пользовательского шифрования.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.