我有一个具有Sqlite后端的Tcl TK应用程序。我非常理解插入,操作和读取字符串数据的语法;但是,我不明白如何使用Tcl将图片或文件存储到Sqlite中。
我知道我必须创建一个在Sqlite中保存BLOB数据的列。我只是不知道在Tcl方面该做些什么。如果有人知道如何做到这一点或有一个很好的参考建议我,我会非常感激。
谢谢,
Damion
答案 0 :(得分:3)
在我的代码中,我基本上将文件作为二进制文件打开,将其内容加载到Tcl变量中,并将其填充到SQLite数据库中。所以,像这样......
# 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)}
显然,你想要品尝季节,而你的桌子可能会包含额外的栏目......
答案 1 :(得分:0)
incrblob
命令看起来像你想要的:http://sqlite.org/tclsqlite.html#incrblob
“incrblob”方法
此方法打开一个TCL通道 可用于读取或写入 数据库中预先存在的BLOB。该 语法是这样的:
dbcmd incrblob ?-readonly?? ?DB? TABLE COLUMN ROWID
该命令返回一个新的TCL通道 用于读取或写入BLOB。 使用通道打开通道 底层sqlite3_blob_open() C-langauge界面。关上 使用close命令的通道 TCL。