Сегодня, я расскажу вам о BLOB. Это всем известная технология записи массива двоичных данных в SQL базу.
Рассмотрим возможность записи файла изображения в БД firebird при помощи ADO и языка программирования VBScript.
Для реализации этой задачи попробуем поискать решение в интернете:
GOOGLE
YANDEX
Что то как то неочем... Но это не беда! Сейчас разберемся.
Вот пример кода с комментариями:
sub SavePIC ' Реализация записи бинарного поля в базу
adTypeBinary = 1 'Определяем константы
Dim BinaryStream
Set BinaryStream = CreateObject("ADODB.Stream") Это команда создания Stream объекта для ADODB. В нем и будут наши байтики
BinaryStream.Type = adTypeBinary
BinaryStream.Open 'Открываем наш поток.
'Тут у нас происходит то, о чем поисковики стараются не искать (шутка)
BinaryStream.LoadFromFile picfname 'Переменная picfname - полный путь к бинарному файлу (картинка или звук или видео или нет)
ReadBinaryFile = BinaryStream.Read 'Читаем файл
sqlstring="select * from PHOTO where ID_CLIENT="+idClient 'В этой примерной базе есть таблица PHOTO в которой ID_CLIENT - ключ (PK), а поле PHOTOFILE - это BLOB поле для хранения бинарного барахла.
Set rs = CreateObject("ADODB.Recordset") ' Объект rc содержит набор записей, которые нам вернул select * from PHOTO это 1 строка
rs.Open sqlstring, DBConn,1,3 'Открываем набор для записи.
rs.Fields("ID_CLIENT").Value=idClient ' Заполняем все 3 поля. Это поле у нас идентификатор.
rs.Fields("P_DATE").Value=Now' Это дата записи.
rs.Fields("PHOTOFILE").Value=ReadBinaryFile' Записываем в поле то, что читали ранее
rs.Update' Обновляем записи
rs.Close'Закрываем набор
BinaryStream.Close'Закрываем поток
end sub
sqlstring="select * from PHOTO where ID_CLIENT="+idClient 'Ищем нашу запись в таблице по ИД
Set rs = CreateObject("ADODB.Recordset")
rs.Open sqlstring, DBConn 'Открываем набор записей
ByteArray= rs.Fields("PHOTOFILE").Value 'Присваиваем значение поля PHOTOFILE переменной ByteArray
FileName=Path+"\res\temp.jpg" 'Это имя файла для сохранения его на диск
adTypeBinary = 1 'Объявляем константы
adSaveCreateOverWrite = 2 'Перезаписать если такой файл уже есть
Dim BinaryStream
Set BinaryStream = CreateObject("ADODB.Stream") ' Создаем бинарный поток
BinaryStream.Type = adTypeBinary
BinaryStream.Open
BinaryStream.Write ByteArray ' Записываем в наш поток содержимое записи из БД
BinaryStream.SaveToFile FileName, adSaveCreateOverWrite ' И сохраняем файл на диск. FileName - путь к файлу
rs.Close
BinaryStream.Close' Закрываем все после себя
Новые комментарии