Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2012, 22:42   #1
Kreadlling
Форумчанин
 
Аватар для Kreadlling
 
Регистрация: 03.09.2009
Сообщений: 116
По умолчанию Сохранить картинку в базе данных FireBird

Здравствуйте! Мне нужно сохранять картинки, которые выбрал пользователь из папки, в базе данных FireBird.
Таблица будет уже создана в базе. Не подскажете как это реализовать? Также интересует вопрос: лучше сохранять
картинки в базе данных или же лучше держать их отдельно в папке, в таблице бд указывать лишь адрес на картинку?
Заранее благодарю.
Kreadlling вне форума Ответить с цитированием
Старый 07.03.2012, 00:28   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Есть такой вариант (работающий):

Код:
var
  Ss  : TStringStream;
  St : string;
begin
  //выбранная пользователем картинка помещена в Image1...

  //запись в BLOB
  if (Image1.Picture.Graphic <> nil) and not Image1.Picture.Graphic.Empty
  then begin
    DM.qrTree.SQL.Text :=
                  'update catalog set  Pict = :Pict where ID = '+ IntToStr(IDc);

    Ss := TStringStream.Create(st);
    Image1.Picture.Bitmap.SaveToStream(Ss);
    DM.qrTree.ParamByName('Pict').AsBlob := Ss.DataString;
    Ss.Free;

    DM.qrTree.Transaction.StartTransaction;
    DM.qrTree.ExecSQL;
    DM.qrTree.Transaction.Commit;
  end;

  //чтение картинки из поля с типом BLOB
  st := DM.qrTree.FieldByName('Pict').AsString;
  Ss := TStringStream.Create(st);

  if Ss.Size > 0 then begin
    Image1.Picture.Bitmap.LoadFromStream(Ss);
  end;
  Ss.Free;
где DM.qrTree - TIBQuery,

Как и где лучше хранить изображения зависит от задачи.
Хранение картинок в БД преследует цель "не растерять" ресурсы, держать их компактно, когда изображениями дорожат.
Ссылки на файлы изображений упрощают работу с ними, но есть вероятность "растерять все накопленное богатство". Если это не критично (картинки не так важны), то проще, разумеется хранить в БД ссылки на файлы.
Прик вне форума Ответить с цитированием
Старый 07.03.2012, 08:48   #3
Kreadlling
Форумчанин
 
Аватар для Kreadlling
 
Регистрация: 03.09.2009
Сообщений: 116
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
хранить в БД ссылки на файлы.
А как это реализовать, если мне нужно выбирать картинку с помощью opendialog, она отображается пользователю, и затем путь на нее помещается в базу данных? И как потом достать эту картинку?
Kreadlling вне форума Ответить с цитированием
Старый 07.03.2012, 09:16   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

как достать картинку?
Это что для вас значит?

Когда выбирается изображение с помощью диалога - это не есть достать картинку?
Если так, то чем отличается доставание картинки с помощью выбранного файла и пути к нему через диалог и, с другой стороны, с помощью того же самого пути и имени файла сохраненного в базе данных?
Под ссылкой подразумевалась строка, содержащая путь до файла картинки плюс имя файла.
Эту строку и надо сохранять в БД.
Прик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранить картинку losbl9 Работа с сетью в Delphi 0 18.01.2012 11:01
WebBrowser сохранить картинку StartMis Работа с сетью в Delphi 3 21.10.2011 12:37
сохранить картинку delfin07 Помощь студентам 1 21.05.2011 08:27
программное подключение к базе Firebird Jene4ka БД в Delphi 5 24.04.2011 22:12
Как сохранить картинку.... Lifefine Мультимедиа в Delphi 22 24.10.2009 11:43