Q&A

  • exe file을 DB의 Blob Field에 저장하는 방법
Delphi4.0으로 개발한 exe file을 DB Blob Field에 저장하였다가

사용자의 요청에 의해 DB에 있는 exe file을 Down받아 사용할 수 있도록

구현하려 하는데 잘 안되네요.....

LoadFromFile, SaveToFile을 사용하였더니 exe file은 Down되는데

Dos용 exe로 인식해서 실행이 안되거든요....



DB는 Oracle입니다.



방법을 아시분은 좀 알려주십시요.....

1  COMMENTS
  • Profile
    김영대 1999.08.05 23:27
    오승섭 께서 말씀하시기를...

    > Delphi4.0으로 개발한 exe file을 DB Blob Field에 저장하였다가

    > 사용자의 요청에 의해 DB에 있는 exe file을 Down받아 사용할 수 있도록

    > 구현하려 하는데 잘 안되네요.....

    > LoadFromFile, SaveToFile을 사용하였더니 exe file은 Down되는데

    > Dos용 exe로 인식해서 실행이 안되거든요....

    >

    > DB는 Oracle입니다.

    >

    > 방법을 아시분은 좀 알려주십시요.....



    안녕하세요 김영대입니다

    전에 한번 올렸던건데 잘 될려나 모르겠습니다



    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    DBTables, Db, StdCtrls;



    type

    TForm1 = class(TForm)

    B_BlobToFile: TButton;

    B_FileToBlob: TButton;

    B_DeleteBlob: TButton;

    Database1: TDatabase;

    Query1: TQuery;

    Table1: TTable;

    E_FileName: TEdit;

    procedure B_BlobToFileClick(Sender: TObject);

    procedure B_FileToBlobClick(Sender: TObject);

    procedure B_DeleteBlobClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation

    {$R *.DFM}





    procedure TForm1.B_BlobToFileClick(Sender: TObject);

    var

    FS_Write: TFileStream;

    begin

    try

    FS_Write := TFileStream.Create(E_FileName.Text, fmCreate);

    Query1.Close;

    Query1.SQL.Clear;

    Query1.SQL.Add(' SELECT BLOBFIELD ');

    Query1.SQL.Add(' FROM BLOBTABLE ');

    Query1.SQL.Add(' WHERE FILENAME = '''+E_FileName.Text+''' ');

    Query1.Open;

    TBlobField(Query1.FieldByName('BLOBFIELD')).SaveToStream(FS_Write);

    // 위의 TFileStream을 쓰지않고 직접 저장하려면 아래의 SaveToFile을 쓰십시요

    // TBlobField(Query1.FieldByName('BLOBFIELD')).SaveToFile(E_FileName.Text);

    Query1.Close;

    finally

    FS_Write.Free;

    end;

    end;



    procedure TForm1.B_FileToBlobClick(Sender: TObject);

    begin

    // Table1.TableName 프로퍼티는 'BLOBTABLE'이 되겠죠

    Table1.Open;

    Table1.Insert;

    Table1.FieldByName('FILENAME').AsString := E_FileName.Text;

    TBlobField(Table1.FieldByName('BLOBFIELD')).LoadFromFile(E_FileName.Text);

    Table1.Post;

    Table1.Close;

    end;



    procedure TForm1.B_DeleteBlobClick(Sender: TObject);

    begin

    Query1.Close;

    Query1.SQL.Clear;

    Query1.SQL.Add(' DELETE FROM BLOBTABLE ');

    Query1.SQL.Add(' WHERE FILENAME = '''+E_FileName.Text+''' ');

    Query1.ExecSQL;

    end;



    end.