Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[7460] [질문] JPG->DB (image field)에 저장하는 문제 중 질문사항..
kittysp [] 1601 읽음    2001-09-26 11:12
아래에 있던 글에서 발췌한 소스로 JPG 파일을 ADOQuery를 만들어서 DB에 넣는 작업을 하고 있습니다.

그런데, 소스 상에서는 DB이름과 field 항목만이 있을 뿐, Table을 지정하는 부분이 없네요. 그래서 Table 이름을 지정해 주려고, ADO Component를 이것저것 섞어서 써봤는데 소용이 없습니다. 고수님들께 부탁드립니다.

제가 짜놓았던 소스를 아래 첨부해드리겠습니다.
button1을 누르면, 같은 디렉토리에 있는 JPG 파일이 DB로 저장되고, button2를 누르면 DB에 있는 image field에서 JPG파일이 만들어지는 소스로 알고 있습니다.
어떻게 하면 table 이름을 지정해 줄 수 있을까요...

===============================================================================

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;

type
TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   ADOQuery1: TADOQuery;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
private
   { Private declarations }
public
       function LoadFromBlob(const AField: TField; const Stream: TStream): boolean;
       function SaveToBlob(const Stream: TStream; const AField: TField): boolean;

   { Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

function TForm1.LoadFromBlob(const AField: TField;
const Stream: TStream): boolean;
var
ResultStr: string;
PResultStr: PChar;
begin
Result := false;
if (Assigned(AField)) and (Assigned(Stream)) then begin
  try
    ResultStr := AField.Value;
    PResultStr := PChar(ResultStr);
    Stream.Write(PResultStr^, Length(ResultStr));
    Stream.Seek(0,0);
    Result := true;
  except
  end;
end;

end;

function TForm1.SaveToBlob(const Stream: TStream;
const AField: TField): boolean;
var
FieldStr: string;
PFieldStr: PChar;
begin
Result := false;
if (Assigned(AField)) and (Assigned(Stream)) then begin
  try
    Stream.Seek(0,0);
    SetLength(FieldStr, Stream.Size);
    PFieldStr := PChar(FieldStr);
    Stream.Read(PFieldStr^, Stream.Size);
    AField.Value := FieldStr;
    Result := true;
  except
  end;
end;

end;


// save to DB
procedure TForm1.Button1Click(Sender: TObject);
var
FS: TFileStream;
begin
FS := TFileStream.Create('aaa.jpg', fmOpenRead);
SaveToBlob(FS, ADOQuery1.FieldByName('snapshot'));
  // 이 부분에서 table 이름이 없어서 snapshot이라는 field가 없다고 계속 오류남
FS.Free;


end;

// load DB to image file
procedure TForm1.Button2Click(Sender: TObject);
var
FS: TFileStream;
begin
FS := TFileStream.Create('bbb.jpg', fmCreate);
LoadFromBlob(ADOQuery1.FieldByName('snapshot'), FS);
FS.Free;

end;

end.

+ -

관련 글 리스트
7460 [질문] JPG->DB (image field)에 저장하는 문제 중 질문사항.. kittysp 1601 2001/09/26
7461     Re:Query 컴퍼넌트를 이용해 Blob 데이터를 저장하거나 불러오기 박지훈.임프 5899 2001/09/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.