À 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é.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.