Как хранить данные BLOB в Sqlite с помощью Tcl
Вопрос
У меня есть приложение Tcl TK с серверной частью Sqlite.Я довольно хорошо понимаю синтаксис вставки, манипулирования и чтения строковых данных;однако я не понимаю, как хранить изображения или файлы в Sqlite с помощью Tcl.
Я знаю, что мне нужно создать столбец, содержащий данные BLOB, в Sqlite.Я просто не знаю, что делать со стороны Tcl.Если кто-нибудь знает, как это сделать, или может предложить мне хорошую ссылку, я был бы очень признателен.
Спасибо,
Дэмион
Решение
В моем коде я в основном открываю файл как двоичный, загружаю его содержимое в переменную 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)}
Очевидно, вы захотите приправить по вкусу, и ваша таблица, вероятно, будет содержать дополнительные столбцы...
Другие советы
А incrblob
команда выглядит так, как вы хотите: http://sqlite.org/tclsqlite.html#incrblob
Метод «incrblob»
Этот метод открывает канал TCL, который можно использовать для чтения или записи в ранее существовавшую каплей в базе данных.Синтаксис такой:
dbcmd incrblob ?-readonly?? ?DB? TABLE COLUMN ROWID
Команда возвращает новый канал TCL для чтения или написания на Blob.Канал открывается с использованием базового интерфейса sqlite3_blob_open () c-langauge.Закройте канал, используя команду Close TCL.