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.