Cómo almacenar datos BLOB en Sqlite usando Tcl
Pregunta
Tengo una aplicación Tcl TK que tiene un back-end Sqlite. Entiendo bastante la sintaxis para insertar, manipular y leer datos de cadena; sin embargo, no entiendo cómo almacenar imágenes o archivos en Sqlite con Tcl.
Sé que tengo que crear una columna que contenga datos BLOB en Sqlite. Simplemente no sé qué hacer en el lado Tcl de las cosas. Si alguien sabe cómo hacer esto o tiene una buena referencia para sugerirme, realmente lo agradecería.
Gracias,
Damion
Solución
En mi código, básicamente abro el archivo como un binario, cargo su contenido en una variable Tcl y lo introduzco en la base de datos SQLite. Entonces, algo como esto ...
# 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)}
Obviamente, querrás sazonar al gusto, y tu mesa probablemente contendrá columnas adicionales ...
Otros consejos
El comando incrblob
tiene el aspecto que desea: http: // sqlite .org / tclsqlite.html # incrblob
El " incrblob " método
Este método abre un canal TCL que se puede usar para leer o escribir en un BLOB preexistente en la base de datos. los la sintaxis es así:
dbcmd incrblob ?-readonly?? ?DB? TABLE COLUMN ROWID
El comando devuelve un nuevo canal TCL para leer o escribir en el BLOB. El canal se abre usando el sqlite3_blob_open subyacente () Interfaz de lenguaje C. Cierra el canal utilizando el comando de cierre de TCL.