Come archiviare i dati BLOB in Sqlite usando Tcl
Domanda
Ho un'applicazione Tcl TK che ha un back-end Sqlite. Comprendo praticamente la sintassi per inserire, manipolare e leggere i dati delle stringhe; tuttavia, non capisco come archiviare immagini o file in Sqlite con Tcl.
So che devo creare una colonna che contiene i dati BLOB in Sqlite. Semplicemente non so cosa fare dal lato Tcl delle cose. Se qualcuno sa come fare o ha un buon riferimento da suggerire per me, lo apprezzerei davvero.
Grazie
Damion
Soluzione
Nel mio codice, fondamentalmente apro il file come binario, carico il suo contenuto in una variabile Tcl e inserisco quello nel database SQLite. Quindi, qualcosa del genere ...
# 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)}
Ovviamente, vorrai condire a piacere e la tua tabella conterrà probabilmente colonne aggiuntive ...
Altri suggerimenti
Il comando incrblob
assomiglia a quello che desideri: http: // sqlite .org / tclsqlite.html # incrblob
Il " incrblob " Metodo
Questo metodo apre un canale TCL che può essere usato per leggere o scrivere in a BLOB preesistente nel database. Il la sintassi è così:
dbcmd incrblob ?-readonly?? ?DB? TABLE COLUMN ROWID
Il comando restituisce un nuovo canale TCL per leggere o scrivere su BLOB. Il canale viene aperto utilizzando sottostante sqlite3_blob_open () Interfaccia C-langauge. Chiudi il canale usando il comando di chiusura di TCL.