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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top