Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Хранение изображения в sql server


Автор: yandeXXX 22.2.2011, 10:07
Имеется база данных (СУБД, соответственно, MS SQL Server 2008), доступ к таблицам через через TADOTable. В таблице есть поле типа image. Подскажите как можно хранить и отображать изображения?

Автор: Antimol 22.2.2011, 16:45
Цитата

...как можно хранить изображения

Создать в таблице поле и указать ему тип image


Цитата

....как можно отображать  изображения


Как вариант - можно разместить на форме компонент  DBImage и подключить его к соответствующему полю (правда кажется там только рисунки в bmp формате отображаются)

Автор: yandeXXX 22.2.2011, 16:50
Поле с типом image есть, как я и указал. С компонентом DBImage тоже пробовал. Проблема в том, что не срабатывает. Код, которым добавлял данные:
Код

if OpenPictureDialog1.Execute then
begin
  table1.edit;
  DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  Table1.Post;
end;

Автор: chip_and_dayl 22.2.2011, 17:23
Код

function SetData(Dataset: TADOQuery; FieldName: String; Bitmap: TBitmap): Boolean;
var Stream: TStream;
begin
  Result := True;
  try
    Stream := TADOBlobStream.Create(Dataset.FieldByName(FieldName) as TBlobField, bmWrite);
    try
      BitMap.SaveToStream(Stream);
    finally
      Stream.Free;
    end;
  except
    Result := False;
  end;
end;


Пример работы
Код

procedure TfrmPropHall.btnChangeClick(Sender: TObject);
var
  Bmp: TBitMap;
begin
  inherited;
  if dlgPicture.Execute then
    begin
      Bmp := TBitMap.Create;
      try
        Bmp.LoadFromFile(dlgPicture.FileName);
          dsGroup.Dataset.Edit;
        SetData(dsGroup.Dataset as TADOQuery, 'background', Bmp);
        dsGroup.Dataset.Post;
      finally
        FreeAndNil(Bmp);
      end;
    end;
end;


Добавлено через 1 минуту и 18 секунд
'background'  -  имя поля с изображением в вашей базе

Автор: yandeXXX 24.2.2011, 09:46
спасибо! помогло )
вопрос теперь в другом. dbimage, похоже, отображает только bmp. как быть, если хочу jpeg тоже отображать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)