Windows Programming/Delphi 6/7

Delphi6/7 TADOQuery - Binary 조회

denisOh 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;