我有一个EXE文件,现在想放入数据库中,请问如果将其存入,并将其还原到本地

解决方案 »

  1.   

    【引用madyak(无天) 的文章】
    对Blob字段进行读写?  
     
           Blob的读写一般通过流,也可以直接从文件读出数据和保存数据到文件。  
           
           写入Blob的代码如下:  
     
               Query.SQL.Clear;  
               Query.Sql.Add('INSERT  INTO  表名  (...,Blob字段名,...)  VALUES  (...,:Blob,...)');      
               Query.ParamByName(Blob)).LoadFromStream(Stream);  
               //还可以用方法LoadFromFile()直接保存文件中的数据  
               Query.SQL.ExecSQL;  
     
           从字段读出代码如下:  
                 
               Query.Close;  
               Query.SQL.Clear;  
               Query.SQL.Add('SELECT  ...,Blob字段名,...  FROM  表名  WHERE  ...');  
               Query.Open;  
               TBlobField(Query.SQL.FieldByName(Blob字段名)).SaveToStream(Stream);  
               //或(Query.ParamByName(Blob字段名)  as  TBlobFiedl).SaveToStream(Stream);  
               //或Stream=TBlobFieldStream.Create(TBlobField(Query.SQL.FieldByName(Blob字段名)),bmRead);  
               //保存到文件用SaveToFile(文件名)
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    //窗题上放一个adoquery1,
     with adoquery1 do
     begin
      close;
      sql.Clear;
      sql.Add('insert into 表名(字段名) values(:exe)');
      parameters.Items[0].LoadFromFile('e:\delphi程序\test.exe',ftBlob);
      execsql;
      close;
     end;end;
      

  3.   

    上面的是导入
    procedure TForm1.Button2Click(Sender: TObject);//导出
    begin
    with ADOquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('select * from 表名);
      open;
      (fieldByName('字段名') AS TBlobField).SaveToFile('e:\delphi程序\auto_test.exe');
    end;end;
      

  4.   

    TBlobField(adotable.fieldbyaname('afd')).savetofile('file path');
    //open 
    ok 
      

  5.   

    寫入
    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear; 
    ADOQuery1.SQL.Add('insert into Pic values(.....,:Pic,...)'); 
    ................. 
    ADOQuery1.Parameters.ParamByName('Pic').Assign(Image1.Picture.Bitmap); 
    ................. 
    ADOQuery1.ExecSQL; 
    導出
    Image1.Picture.Bitmap.Assign(TBLOBField(ADOQuery1.Parameters.ParamByName('Pic'))) 類似操作
      

  6.   

    ContentStream: TMemoryStream;ContentStream:= TMemoryStream.Create;
    ContentStream.LoadFromFile('YourFileName.exe');//Insert,(未加异常处理)
    strSQL:= 'insert into 表名(字段名) values(:Content)';
    if ADOQuery.Active then ADOQuery.Close;
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Add(strSQL);
    ADOQuery.Parameters.ParamByName('Content').LoadFromStream(ContentStream, ftBlob);
    ADOQuery.ExecSQL;
    ContentStream.free;//Load
    (ADOQuery.Fields.FieldByName('Content') as TBlobField).SaveToStream(TempStream);
    TempStream.Position:= 0;
    TempStream.SaveToFile('YourFileName.exe');
      

  7.   

    以sqlserver为例,其中“字段1”为image类型(存放文件),“字段2”为char类型(存放文件名)。单元引用加上shellapi。
    存入数据库:
      if not OpenDialog1.Execute then exit;
      table1.insert;
      (table1.FieldByName('字段1') as TBlobField).LoadFromFile(OpenDialog1.filename);
      table1.FieldByName('字段2').value:=OpenDialog1.filename;
      table1.post;
    打开文件:
      (table1.FieldByName('字段1') as TBlobField).savetoFile(table1.FieldByName('字段2').value);
      shellexecute(handle,nil,pchar(table1.FieldByName('字段2').value),nil,nil,sw_shownormal);如果是tquery需要配合tupdatesql使用,方法相同。