Сообщение об ошибке

  • Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; views_display has a deprecated constructor в функции require_once() (строка 3066 в файле /home/users/m/matskywalker/domains/skywalkeradmin.ru/includes/bootstrap.inc).
  • Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; views_many_to_one_helper has a deprecated constructor в функции require_once() (строка 113 в файле /home/users/m/matskywalker/domains/skywalkeradmin.ru/sites/all/modules/ctools/ctools.module).

BLOB. Фоточки и файлики. Как записать все это добро в БД Firebird?

Сегодня, я расскажу вам о 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' Закрываем все после себя