BLOG main image
분류 전체보기 (65)
JSP (6)
Android (1)
ASP.NET (0)
MSSQL (4)
PHP (18)
ASP (11)
오픈 API (1)
HTML (2)
JavaScript (0)
Windows Programming (8)
컴퓨터교양 (14)
객체 지향 (0)
리뷰 및 생각 (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2010. 9. 13. 02:33

델파이는 조회 결과레코드셋에 들어 있는 바이너리를
CreateBlobStream() 함수를 이용하여 받을 수 있다.
기본적으로 stream으로 받아서 메모리에 올린 후 원하는 작업을 하면 된다.

이 코드 조각에서는 바이너리를 파일로 저장하기 위해 TMemoryStream의 SaveToFile() 프로시져를 사용하였다.

var
  code, tempFullPath: string;
  stream : TStream;
  blob : string;
  mStream : TMemoryStream;

begin
    with ADOQuery1 do begin
      if Active then Close;
      SQL.Clear;
      SQL.Text := 'SELECT binary'
                + ' FROM tablename'
                + ' WHERE code=:code';
      Parameters.ParamByName('code').Value := code;
      // 여기서 Open의 결과는 한행만을 반환한다.
      Open;
      stream := CreateBlobStream(FieldByName('binary'), bmRead);
      SetLength(blob, stream.Size);
      stream.Read(Pointer(blob)^, stream.Size);
      mStream := TMemoryStream.Create;
      mStream.Write(Pointer(blob)^, Length(blob));
      mStream.SaveToFile(tempFullPath);
    end;
end;