如何使用Tcl在Sqlite中存储BLOB数据

时间:2009-10-23 13:57:27

标签: sql sqlite blob tcl

我有一个具有Sqlite后端的Tcl TK应用程序。我非常理解插入,操作和读取字符串数据的语法;但是,我不明白如何使用Tcl将图片或文件存储到Sqlite中。

我知道我必须创建一个在Sqlite中保存BLOB数据的列。我只是不知道在Tcl方面该做些什么。如果有人知道如何做到这一点或有一个很好的参考建议我,我会非常感激。

谢谢,

Damion

2 个答案:

答案 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。