Comment stocker des données BLOB dans Sqlite à l'aide de Tcl
Question
J'ai une application Tcl TK qui a un back-end Sqlite. Je comprends assez bien la syntaxe pour insérer, manipuler et lire des données de chaîne; Cependant, je ne comprends pas comment stocker des images ou des fichiers dans Sqlite avec Tcl.
Je sais que je dois créer une colonne contenant les données BLOB dans Sqlite. Je ne sais tout simplement pas quoi faire du côté de Tcl. Si quelqu'un sait comment faire cela ou a une bonne référence à me suggérer, je l'apprécierais vraiment.
Merci,
Damion
La solution
Dans mon code, j'ouvre essentiellement le fichier en tant que binaire, je charge son contenu dans une variable Tcl et je le renseigne dans la base de données SQLite. Donc, quelque chose comme ça ...
# load the file's contents
set fileID [open $file RDONLY]
fconfigure $fileID -translation binary
set content [read $fileID}
close $fileID
# store the data in a blob field of the db
$db eval {INSERT OR REPLACE INTO files (content) VALUES ($content)}
Évidemment, vous voudrez assaisonner au goût et votre table contiendra probablement des colonnes supplémentaires ...
Autres conseils
La commande incrblob
ressemble à ce que vous souhaitez: http: // sqlite .org / tclsqlite.html # incrblob
Le " incrblob " méthode
Cette méthode ouvre un canal TCL qui peut être utilisé pour lire ou écrire dans un BLOB préexistant dans la base de données. le la syntaxe est la suivante:
dbcmd incrblob ?-readonly?? ?DB? TABLE COLUMN ROWID
La commande retourne un nouveau canal TCL pour lire ou écrire dans le BLOB. Le canal est ouvert en utilisant le sqlite3_blob_open sous-jacent () Interface C-langue. Fermer la canal en utilisant la commande proche de TCL.