Sobre el proyecto
# godot-sqlite
Este envoltorio GDExtension hace que SQLite3 esté disponible en Godot 4.0+ sin requerir compilación adicional ni modificaciones en el script de compilación. Admite Mac OS X (universal), Linux, Windows, Android (arm64), iOS (arm64) y HTML5 (la estabilidad depende del navegador).
## Instalación
Instale a través de la Biblioteca de Activos de Godot (busque 'godot-sqlite') o descargue manualmente los archivos de compilación desde la pestaña de versiones. Active el complemento en Configuración del Proyecto/Complementos. Hay un proyecto de demostración disponible.
## Uso
### Variables
- **path** (String, predeterminado="default"): Ruta a la base de datos, configurada antes de `open_db()`. Admite `res://` y `user://`.
- **error_message** (String): Mensaje de error legible por humanos de la última consulta.
- **default_extension** (String, predeterminado="db"): Extensión agregada automáticamente si no se proporciona ninguna.
- **foreign_keys** (Boolean, predeterminado=false): Habilita restricciones de clave externa.
- **read_only** (Boolean, predeterminado=false): Abre la base de datos en modo solo lectura, permitiendo empaquetarla en PCK.
- **query_result** (Array): Resultados de la última consulta por valor (seguro para consultas sucesivas).
- **query_result_by_reference** (Array): Resultados por referencia, limpiados y repoblados en cada consulta.
- **last_insert_rowid** (Integer): Expone `sqlite3_last_insert_rowid()`.
- **verbosity_level** (Integer, predeterminado=1): Nivel de registro en consola (0=silencioso, 1=normal, 2=detallado, 3=muy detallado).
### Métodos
- **open_db()** / **close_db()**: Abre/cierra una conexión de base de datos.
- **query(query_string)**: Ejecuta una declaración SQL cruda.
- **query_with_bindings(query_string, param_bindings)**: Ejecuta con enlaces de parámetros sin nombre para prevenir inyección SQL.
- **query_with_named_bindings(query_string, param_bindings)**: Ejecuta con enlaces nombrados (admite prefijos `:`, `@`, `$`, `?`).
- **create_table(table_name, table_dictionary)**: Crea una tabla con definiciones de columnas (data_type, not_null, unique, default, primary_key, auto_increment, foreign_key).
- **drop_table(table_name)**: Elimina una tabla.
- **insert_row(table_name, row_dictionary)** / **insert_rows(table_name, row_array)**: Inserta filas.
- **select_rows(table_name, query_conditions, selected_columns)**: Selecciona filas, devuelve por valor.
- **update_rows(table_name, query_conditions, updated_row_dictionary)**: Actualiza filas.
- **delete_rows(table_name, query_conditions)**: Elimina filas.
- **import_from_json(import_path)** / **export_to_json(export_path)**: Importa/exporta la estructura y el contenido de la base de datos como JSON.
- **import_from_buffer(input_buffer)** / **export_to_buffer()**: Importa/exporta como buffer con formato JSON (útil para cifrado).
- **create_function(function_name, function_reference, number_of_arguments)**: Vincula una función SQL escalar.
- **get_autocommit()**: Verifica el modo de confirmación automática.
- **compileoption_used(option_name)**: Verifica opciones de compilación (por ejemplo, FTS5).
- **backup_to(destination_path)** / **restore_from(source_path)**: Copia de seguridad/restauración de la base de datos.
- **enable_load_extension(onoff)** / **load_extension(extension_path, extension_entry_point)**: Carga extensiones SQLite.
- **sanitize_identifier(table_or_column_identifier)**: Sanea nombres de tablas/columnas para uso seguro en consultas.
### Señales
- **row_deleted(table_name, rowid)**: Emitida cuando se elimina una fila.
- **row_inserted(table_name, rowid)**: Emitida cuando se inserta una fila.
- **row_updated(table_name, rowid)**: Emitida cuando se actualiza una fila.
## Aspectos Destacados de Preguntas Frecuentes
- **Errores de sintaxis**: Pruebe consultas en línea, use funciones de consulta crudas y asegure comillas adecuadas para cadenas con espacios o comas.
- **Nombres dinámicos de tablas/columnas**: No se pueden enlazar; insértelos directamente en la cadena de consulta.
- **Acceso móvil/HTML5**: Las bases de datos de solo lectura deben empaquetarse en PCK; lectura-escritura requiere copiarlas a `user://`.
- **Compatibilidad con servidores**: Funciona con el binario Godot Server; Linux más antiguo puede requerir recompilación.
- **Extensiones**: FTS5, funciones matemáticas y R*Tree son compatibles pero requieren recompilación con banderas.
- **Cifrado**: No compatible nativamente; use buffers de importación/exportación para cifrado personalizado.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.