Wie BLOB-Daten in SQLite Tcl to Store verwenden
Frage
Ich habe eine Tcl TK-Anwendung, die einen SQLite-Backend hat. Ich ziemlich viel verstehen, die Syntax für das Einfügen, Bearbeiten und Lesen von String-Daten; aber ich verstehe nicht, wie Bilder oder Dateien in Sqlite mit Tcl speichern.
Ich weiß, ich habe eine Spalte erstellen, die BLOB-Daten in SQLite hält. Ich weiß einfach nicht, was auf der Tcl-Seite der Dinge zu tun. Wenn jemand weiß, wie dies zu tun oder hat eine gute Referenz für mich vorschlagen, würde ich wirklich zu schätzen.
Danke,
Damion
Lösung
In meinem Code, ich öffne grundsätzlich die Datei als binär, lade ihren Inhalt in ein Tcl-Variable, und Sachen, die in die SQLite db. Also, so etwas wie dieses ...
# 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)}
Natürlich, werden Sie wollen abschmecken, und Sie sind wahrscheinlich Tabelle zusätzliche Spalten enthalten wird ...
Andere Tipps
Der incrblob
Befehl sieht wie das, was Sie wollen: http://sqlite.org/tclsqlite.html# incrblob
Die "incrblob" Methode
Dieses Verfahren eröffnet einen Kanal, der TCL kann verwendet werden, in eine lesen oder schreiben vorbestehenden BLOB in der Datenbank. Das Syntax ist wie folgt:
dbcmd incrblob ?-readonly?? ?DB? TABLE COLUMN ROWID
Der Befehl gibt einen neuen TCL Kanal zum Lesen oder zum Schreiben BLOB. Der Kanal wird unter Verwendung der geöffneten darunter liegende sqlite3_blob_open () C-Langauge-Schnittstelle. Schließe Kanal den Befehl Schließen unter Verwendung von TCL.