2016-01-19 75 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'?錯字? –