À propos du projet

# godot-sqlite Ce wrapper GDExtension rend SQLite3 disponible dans Godot 4.0+ sans nécessiter de compilation supplémentaire ni de modifications du script de build. Il prend en charge Mac OS X (universel), Linux, Windows, Android (arm64), iOS (arm64) et HTML5 (la stabilité dépend du navigateur). ## Installation Installez via la bibliothèque d'actifs Godot (recherchez 'godot-sqlite') ou téléchargez manuellement les fichiers de build depuis l'onglet des versions. Activez le plugin dans Paramètres du projet/Plugins. Un projet de démonstration est disponible. ## Utilisation ### Variables - **path** (String, défaut="default"): Chemin vers la base de données, à définir avant `open_db()`. Prend en charge `res://` et `user://`. - **error_message** (String): Message d'erreur lisible provenant de la dernière requête. - **default_extension** (String, défaut="db"): Extension ajoutée automatiquement si aucune n'est fournie. - **foreign_keys** (Boolean, défaut=false): Active les contraintes de clés étrangères. - **read_only** (Boolean, défaut=false): Ouvre la base de données en lecture seule, permettant l'empaquetage dans PCK. - **query_result** (Array): Résultats de la dernière requête par valeur (sûr pour les requêtes successives). - **query_result_by_reference** (Array): Résultats par référence, effacés et repeuplés à chaque requête. - **last_insert_rowid** (Integer): Expose `sqlite3_last_insert_rowid()`. - **verbosity_level** (Integer, défaut=1): Niveau de journalisation console (0=silencieux, 1=normal, 2=verbeux, 3=très verbeux). ### Méthodes - **open_db()** / **close_db()**: Ouvre/ferme une connexion à la base de données. - **query(query_string)**: Exécute une instruction SQL brute. - **query_with_bindings(query_string, param_bindings)**: Exécute avec des liaisons de paramètres sans nom pour prévenir l'injection SQL. - **query_with_named_bindings(query_string, param_bindings)**: Exécute avec des liaisons nommées (prend en charge les préfixes `:`, `@`, `$`, `?`). - **create_table(table_name, table_dictionary)**: Crée une table avec des définitions de colonnes (data_type, not_null, unique, default, primary_key, auto_increment, foreign_key). - **drop_table(table_name)**: Supprime une table. - **insert_row(table_name, row_dictionary)** / **insert_rows(table_name, row_array)**: Insère des lignes. - **select_rows(table_name, query_conditions, selected_columns)**: Sélectionne des lignes, renvoie par valeur. - **update_rows(table_name, query_conditions, updated_row_dictionary)**: Met à jour des lignes. - **delete_rows(table_name, query_conditions)**: Supprime des lignes. - **import_from_json(import_path)** / **export_to_json(export_path)**: Importe/exporte la structure et le contenu de la base de données en JSON. - **import_from_buffer(input_buffer)** / **export_to_buffer()**: Importe/exporte sous forme de tampon formaté JSON (utile pour le chiffrement). - **create_function(function_name, function_reference, number_of_arguments)**: Lie une fonction SQL scalaire. - **get_autocommit()**: Vérifie le mode d'autocommit. - **compileoption_used(option_name)**: Vérifie les options de compilation (par exemple, FTS5). - **backup_to(destination_path)** / **restore_from(source_path)**: Sauvegarde/restaure la base de données. - **enable_load_extension(onoff)** / **load_extension(extension_path, extension_entry_point)**: Charge des extensions SQLite. - **sanitize_identifier(table_or_column_identifier)**: Assainit les noms de tables/colonnes pour une utilisation sûre dans les requêtes. ### Signaux - **row_deleted(table_name, rowid)**: Émis lorsqu'une ligne est supprimée. - **row_inserted(table_name, rowid)**: Émis lorsqu'une ligne est insérée. - **row_updated(table_name, rowid)**: Émis lorsqu'une ligne est mise à jour. ## Points forts de la FAQ - **Erreurs de syntaxe**: Testez les requêtes en ligne, utilisez les fonctions de requête brutes et assurez un guillemetage correct pour les chaînes avec espaces ou virgules. - **Noms dynamiques de tables/colonnes**: Ne peuvent pas être liés; insérez-les directement dans la chaîne de requête. - **Accès mobile/HTML5**: Les bases de données en lecture seule doivent être empaquetées dans PCK; la lecture-écriture nécessite une copie vers `user://`. - **Compatibilité serveur**: Fonctionne avec le binaire Godot Server; les anciens Linux peuvent nécessiter une recompilation. - **Extensions**: FTS5, fonctions mathématiques et R*Tree sont pris en charge mais nécessitent une recompilation avec des drapeaux. - **Chiffrement**: Non pris en charge nativement; utilisez les tampons d'import/export pour un chiffrement personnalisé.