Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

BLOB 컬럼에 (이미지 등의)데이터 읽고 쓰기


Recommended Posts

이 문서의 목적:

데이터베이스에 있는 이미지 등 BLOB 데이터를 델파이에서 읽고 쓰는 방법을 설명한다.

목차


 

오라클, SQL 서버 등 DBMS (데이터베이스 관리 시스템)에는 데이터를 담는 테이블의 컬럼에 Blob(Binary Large object) 타입을 지정할 수 있어서 이미지 등 용량이 큰 바이너리(Binary) 데이터를 저장할 수 있다.

 

Blob 컬럼에 이미지 데이터를 쓰는 델파이 코드

var
  wic: TWICImage; // Microsoft Windows Imaging Component
  Stream: TMemoryStream;

begin
  wic := TWICImage.Create;
  Stream := TMemoryStream.Create;
  try
    wic.Assign(AImage.Picture);
    wic.SaveToStream(Stream);
    qryPhoto.Edit; // 데이터셋 수정
    (qryPhoto.FieldByName('PHOTO_IMG') as TBlobField).LoadFromStream(Stream); // BLOB 데이터는 TBlobField 클래스로 전환하여 읽는다
    qryPhoto.Post;
  finally
    Stream.Free;
    wic.Free;
  end;
end;

 

Blob 컬럼에서 이미지 데이터를 읽는 델파이 코드

var
  wic: TWICImage; // Microsoft Windows Imaging Component
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  wic := TWICImage.Create;
  try
    (qryPhoto.FieldByName('PHOTO_IMG') as TBlobField).SaveToStream(Stream);
    if Stream.Size > 0 then
    begin
      try
        wic.LoadFromStream(Stream);
        Image1.Picture.Assign(wic);
      except
      end;
    end;
  finally
    Stream.Free;
    wic.Free;
  end;
end;

예제 코드에서 사용한 컴포넌트 설명

TWICImage

  • TWICImage(Vcl.Graphics.TWICImage)는 다양한 이미지 타입(Bitmap, JPEG, PNG, GIF, TIFF 등)을 담을 수 있는 VCL의 컨테이너 컴포넌트이다. (Microsoft Windows Imaging Component를 캡슐화한 VCL 컴포넌트)

TDataSet를 상속받은 자손

  • BLOB 컬럼이 있는 데이터를 데이터베이스에 읽고 쓰기 위해 이 예제에서는 TFDQuery의 인스턴스인 qryPhoto를 사용했다.
  • 이 컴포넌트가 반드시 TFDQuery일 필요는 없으며, TDataSet을 상속받은 자손이기만 하면 된다. 즉, FireDAC, dbExpress, dbGo(ADO) 등 다양한 데이터 액세스 계층에서 제공하는 컴포넌트 중에서 TDataSet을 상속받은 자손 클래스 라면 모두 사용할 수 있다.
  • 예: TFDTable, TFDQuery
이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.