어드민 2월 4일, 2022에 포스트됨 공유하기 2월 4일, 2022에 포스트됨 이 문서의 목적: 데이터베이스에 있는 이미지 등 BLOB 데이터를 델파이에서 읽고 쓰는 방법을 설명한다. 목차 Blob 컬럼에 이미지 데이터를 쓰는 델파이 코드 Blob 컬럼에서 이미지 데이터를 읽는 델파이 코드 예제 코드에서 사용한 컴포넌트 설명 TWICImage TDataSet를 상속받은 자손 오라클, 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 등 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.