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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top