Blob Data의 저장방법입니다. 참고로 저는 도서출판 대림의 델파이3 플러스
원을 참조하였습니다
폼위에 다음과 같은 Object들이 있다고 합시다.
object DataSource1: TDataSource
DataSet = Table1
object Table1: TTable
DatabaseName = 'c:\test'
TableName = 'test.dbf'
Active = True
[이 Test,DBF에는 단지 MEMO,PIC이라는 두 개의 필드밖에 없습니다.그
러나 test.dbf는 이미 존재하는 파일이어야 합니다. DataBaseDeskTop으로 미
리 c:\test에다 만들어두셔야 합니다.]
object Query1: TQuery
Active = False
DatabaseName = 'c:\test'
[Blob의 저장을 위해서는 Query를 사용하는 것이 좋습니다]
object Memo1: TMemo
[저장될 memo입니다]
object Image1: TImage
[저장될 bmp파일을 보여주기 위한 TImage입니다. 이 Image1에 이미지를 불
러오는데 필요한 오브젝트들이 아래에 있습니다.]
object BitBtn2: TBitBtn [Image1에 그림을 불러오기 위한 Event Handler입니
다]
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Image1.Picture.Loadfromfile(OpenDialog1.FileName);
end;
object OpenDialog1: TOpenDialog [그림을 불러오기 위한 Dialog입니다]
object DBGrid1: TDBGrid
DataSource = DataSource1
[우리가 저장할 테이블의 각 필드가 실제로 blob임을 보여줍니다]
[이것이 요점입니다.]
object BitBtn1: TBitBtn
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Table1.Close;
with Query1 do begin
Close;
SQL.Clear;
SQL.Add('insert into Test(MEMO, PIC) values(:p1,:p2)');
Params[0].AsBlob:=Memo1.Text;
Params[1].LoadFromFile(OpenDialog1.FileName,ftGraphic);
ExecSQL;
end;
Table1.Open;
end;
object DBImage1: TDBImage
DataField = 'PIC'
DataSource = DataSource1
[실제로 그림이 저장되었음을 확인해보기 위한 그림판입니다]
object DBMemo1: TDBMemo
DataField = 'MEMO'
DataSource = DataSource1
[실제로 Memo가 저장되었음을 확인해보기 위한 DBMEMO입니다]
질문의 의도와 맞는지 모르겠는데 어쨌건 도움이 되셨길 바랍니다.
감사합니다.
|