2016-01-19 34 views
-2

我从客户那里获得了一个sql数据库。在sql数据库中有一个表,称为“文档”。文档存储为斑点(看看截图)。恢复存储为sql数据库中的斑点的文档

我想通过Delphi(FileStream?)恢复文件。你有什么想法如何做到这一点?

问候, 丹尼斯弗里德里希

Screenshot table documents

+0

http://stackoverflow.com/questions/26103437/delphi-load-image-save-as-blob-in-a-sql-数据库https://www.google.com/#q=delphi+blob – fantaghirocco

+0

F:TFileStream; F:= TFileStream.Create('C:\ Temp \ test.dat',fmOutput); 尝试 AField.SaveToStream(F);最终 F.Free; 结束; – Zam

+0

使用Navicat软件浏览数据 – Zam

回答

1
function SaveFieldBlobToFile(FQuery: TDataSet): boolean; 
var MyStream : TMemoryStream; 
begin 
    Result:= false; 
    MyStream:= TMemoryStream.Create; 
    try 
    (FQuery.Fieldbyname('MODELE') as TBlobField).SaveToStream(MyStream); 
    if (MyStream<>nil) and (MyStream.Size > 0) then 
    begin 
     MyStream.Position := 0; 
     MyStream.SaveToFile('C:\Temp\tempMyFile.zip'); 
     Result:= true; 
    end 
    else Result:= false; 
    finally 
    MyStream.Free; 
    end; 
end; 


function LoadFileToBlob(FQuery: TDataSet): boolean; 
var MyStream : TMemoryStream; 
begin 
    Result:= false; 
    MyStream := TMemoryStream.Create; 
    try 
    MyStream.LoadFromFile('C:\Temp\tempMyFile.zip'); 
    MyStream.Position := 0; 
    TryEdit(FQuery); 
    (FQuery.FieldByName('MODELE') As TBlobField).LoadFromStream(MyStream); 
    TryPost(FQuery); 
    Result := True; 
    finally 
    MyStream.Free; 
    end; 
end; 
+0

为什么要使用中间存储器流?似乎有点没有意义 - 直接使用文件流即可。什么是'FZQuery'?错字? –