Como para armazenar dados BLOB em Sqlite Usando Tcl
Pergunta
Tenho uma aplicação Tcl TK que tem um back-end Sqlite. Eu praticamente entender a sintaxe para inserir, manipular e ler dados de cadeia; no entanto, eu não entendo como armazenar imagens ou arquivos em SQLite com Tcl.
Eu sei que tenho que criar uma coluna que contém dados BLOB no SQLite. Eu só não sei o que fazer no lado Tcl das coisas. Se alguém souber como fazer isso ou tem uma boa referência para sugerir para mim, eu realmente aprecio isso.
Obrigado,
Damion
Solução
No meu código, eu basicamente abrir o arquivo como binário, carregar o seu conteúdo em uma variável Tcl, e outras coisas que no db SQLite. Então, algo assim ...
# 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, você vai querer tempere a gosto, e você é a tabela provavelmente irá conter colunas adicionais ...
Outras dicas
O comando incrblob
parece com o que você quer: http://sqlite.org/tclsqlite.html# incrblob
O método "incrblob"
Este método abre um canal TCL que pode ser usado para ler ou escrever em um preexistente blob na base de dados. o sintaxe é assim:
dbcmd incrblob ?-readonly?? ?DB? TABLE COLUMN ROWID
O comando retorna um novo canal TCL para ler ou a escrever o BLOB. O canal é aberto usando a sqlite3_blob_open subjacente () interface de C-langauge. Feche o de canal utilizando o comando de fecho de TCL.