程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi利用數據庫實現文件打包

Delphi利用數據庫實現文件打包

編輯:Delphi

Delphi利用數據庫實現文件打包的基本思路分析:

【1】在Delphi中,把文件讀取為文件流,再以流的形式保存在數據庫的OLE 對象的字段中;

【2】當要釋放文件包時,可以直接讀取數據庫的OLE 對象字段,另保存為文件。

以下為具體代碼的實現過程:

【1】打開Delphi,去到“File”=》“New”=》Application,新建一個應用程序工程;

【2】在Form1新建1個Edit控件(用於輸入被打包的文件的文件名),命名為FileName;新建兩個Button控件,其一命名為Import,其二命名為Export;新建ADOTable1,新建DataSource1;

【3】打開ACCESS新建一個數據庫db1.mdb,只有兩個字段,其一為filename(字符,主鍵),其二為filestream(OLE 對象),最後,就是把程序跟數據庫連接起來(這裡就不細說Delphi如何連接數據庫,其實很簡單)。

正式開始編寫代碼,這裡只需要給兩個BUTTON控件的CLICK事件寫代碼即可:

1. procedure TForm1.ImportClick(Sender: TObject);//這是打包文件的代碼,這裡只打包一個文件,具體的循環過程就靠你自己搞定了
2.
3. var
4.
5. stream:TFileStream;
6.
7. begin
8.
9. stream:= TFileStream.Create(FileName.Text,fmShareExclusive);
10.
11. ADOTable1.Append();
12.
13. TBlobField(ADOTable1.FieldByName('filestream')).LoadFromStream(stream);//保存文件流
14.
15. ADOTable1.FieldByName('filename').Value:=FileName.Text;//保存文件名 
16.
17. ADOTable1.Post;
18.
19. stream.Free;
20.
21. DeleteFile(FileName.Text);
22.
23. end;
24.
25.
26.
27. procedure TForm1.ExportClick(Sender: TObject);//這是釋放文件的代碼,這裡只釋放第一個文件,具體的循環過程就靠你自己搞定了
28.
29. var
30.
31. stream:TMemoryStream;
32.
33. begin
34.
35. stream:=TMemoryStream.Create;
36.
37. ADOTable1.First;
38.
39. FileName.Text:=ADOTable1.FieldByName('filename').Value;
40.
41. TBlobField(ADOTable1.FieldByName('filestream')).SaveToStream(stream);
42.
43. stream.SaveToFile(FileName.Text);
44.
45. stream.Free;
46.
47. end;

附:由於文件的打包釋放都是用流,因此可以利用流來壓縮、加密文件!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved