Bonjour,
Je voudrais créer une table dans une base de données SQLITE.
Cette table doit présenter une champs où on peut sauvegarder des fichiers
(Dans mon cas des fichiers xml).
Y a t-il un moyen de le faire?
Merci par avance
Bonjour,
Je voudrais créer une table dans une base de données SQLITE.
Cette table doit présenter une champs où on peut sauvegarder des fichiers
(Dans mon cas des fichiers xml).
Y a t-il un moyen de le faire?
Merci par avance
Oui, en utilisant les BLOB.
C'est un type particulier où l'on place ce que l'on veut.
exemple:
Pour ajouter un blob, le plus simple est d'utiliser "sqlite3_prepare_v2()" avec la requête suivante (pour continuer sur l'exemple précédent):
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE foo (value SMALLINT, buffer BLOB)
Celui-ci te crée un handle "sqlite3_stmt".
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO foo VALUES (?,?)
Tu utilises ensuite la fonction "sqlite3_bind_blob()" pour lier le deuxième "?" avec ton fichier XML (tu dois indiquer quel numéro de "?" tu utilises dans la fonction de bind, ici c'est l'index 2). Tu dois lui donner un pointeur d'un buffer où tu y auras copier tout ton fichier.
Quand tu as fini avec les bind (tu auras couvert tout les "?") tu utilises "sqlite3_step()". C'est lui qui exécutera ta requête pour de bon.
Tu devra aussi utiliser "sqlite3_reset()".
Pour venir récupérer tes fichiers, tu utilises à peu près la même méthode.
La requête s'écrit alors:
Tu effectues aussi un "sqlite3_prepare_v2()". Tu ne dois rien "binder" car la requête ne contient pas de "?".
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM foo
En boucle, tu appels "sqlite3_step()" tant que la fonction te renvoie SQLITE_ROW.
Dans ta boucle tu utilises la fonction "sqlite3_column_blob()" pour retrouver le pointeur vers le buffer (fichier XML) stocker dans la DB.
Pour retrouver la taille du buffer tu utilises "sqlite3_column_bytes()".
Quand ta boucle est terminée, n'oublie d'effectuer un "sqlite3_reset()" et un "sqlite3_finalize()".
Voilà, j'espère t'avoir un peu aidé.![]()
Merci de ton aide c'est vraiment ce que je recherche exactementt.
Merci infiniment![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager