0

Sqlite バックエンドを持つ Tcl TK アプリケーションがあります。文字列データを挿入、操作、および読み取るための構文をほとんど理解しています。ただし、Tcl を使用して Sqlite に画像やファイルを格納する方法がわかりません。

Sqlite で BLOB データを保持する列を作成する必要があることはわかっています。Tcl側で何をすべきかわかりません。誰かがこれを行う方法を知っているか、私に提案する良い参考文献を持っているなら、本当に感謝しています.

ありがとうございました、

ダミオン

4

2 に答える 2

3

私のコードでは、基本的にファイルをバイナリとして開き、その内容を Tcl 変数にロードして、それを SQLite db に入れます。だから、このようなもの...

# 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)}

明らかに、好みに合わせて味付けする必要があり、テーブルにはおそらく追加の列が含まれています...

于 2009-10-23T17:46:41.730 に答える
0

コマンドはあなたが望むもののincrblobように見えます: http://sqlite.org/tclsqlite.html#incrblob

「インクブロブ」メソッド

このメソッドは、データベース内の既存の BLOB の読み取りまたは書き込みに使用できる TCL チャネルを開きます。構文は次のようになります。

dbcmd  incrblob  ?-readonly??   ?DB?  TABLE  COLUMN  ROWID 

このコマンドは、BLOB の読み取りまたは書き込み用の新しい TCL チャネルを返します。チャネルは、基礎となる sqlite3_blob_open() C 言語インターフェースを使用して開かれます。TCL の close コマンドを使用してチャネルを閉じます。

于 2009-10-23T17:06:39.610 に答える