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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top