Как хранить BLOB-данные в Sqlite с помощью Tcl - PullRequest
0 голосов
/ 23 октября 2009

У меня есть приложение Tcl TK, у которого есть серверная часть Sqlite. Я в значительной степени понимаю синтаксис для вставки, манипулирования и чтения строковых данных; Однако я не понимаю, как сохранить изображения или файлы в Sqlite с помощью Tcl.

Я знаю, что должен создать столбец, содержащий данные BLOB в Sqlite. Я просто не знаю, что делать на стороне Tcl. Если кто-нибудь знает, как это сделать или у меня есть хорошая рекомендация, я буду очень признателен за это.

Спасибо,

Damion

Ответы [ 2 ]

3 голосов
/ 23 октября 2009

В моем коде я в основном открываю файл как двоичный файл, загружаю его содержимое в переменную 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)}

Очевидно, что вы захотите попробовать по вкусу, и ваша таблица, вероятно, будет содержать дополнительные столбцы ...

0 голосов
/ 23 октября 2009

Команда incrblob выглядит так, как вы хотите: http://sqlite.org/tclsqlite.html#incrblob

Метод "incrblob"

Этот метод открывает канал TCL, который может быть использован для чтения или записи в существующий BLOB в базе данных. синтаксис такой:

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

Команда возвращает новый канал TCL для чтения или записи в BLOB. Канал открывается с помощью базовый sqlite3_blob_open () C-язык интерфейса. Закрой канал с помощью команды закрытия TCL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...