程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 項目迭代開發手記--文件分割存儲用例的實現過程(1)

項目迭代開發手記--文件分割存儲用例的實現過程(1)

編輯:Delphi
摘  要 本文詳細描述了在嘗試使用極限編程在軟件開發中的一個實現例子,在小步迭代開發中逐步的實現用例需要的功能,同時每個迭代都能集成實現的功能。 關鍵字 極限編程   在一次項目開發中我們開發組遇到了一個需求,該需求的要使用的技術是我們所不熟悉的,就是說在開發過程中我們必須逐步的掌握該項技術,同時希望能夠盡可能的保持代碼有好的結構,因為在不斷增加功能的過程中,會讓代碼逐漸的變得復雜降低可閱讀性。   該需求的用例很簡單,就是把圖檔文件保存到數據庫中,同時在需要時提取出來顯示。但是有的圖檔文件會比較大,在向數據庫提交過程中可能會有性能問題,還有圖檔文件格式的問題,(.bmp,.Jpeg) 小組討論的時,大家提出了首先要對要保存的數據進行壓縮,同時對較大的文件要分割成合適的塊,這樣提交到數據庫中才不會有性能問題。這樣提取圖檔文件過程中就得對分割壓縮的數據進行解壓和拼接才能獲得原始數據,還有就是文件格式的轉換問題。 該項功能我想對於熟悉的開發人員來說可能很簡單,但是由於我們組的開發人員沒有類似的開發經驗,就不可能在一開始獲得優良的設計,只能在不斷的開發進程中改進你的設計,在以往的開發中我們嘗試過小步迭代開發的好處,就是在不斷累積中實現需求的功功能,同時減少過程中的挫折感——你的每一步都很好的實現了需求的功能,還能每日集成你的軟件,實時掌握你的開發進度。 每次迭代實現認為優先級高的功能。 我們認為圖檔文件的保存和提取在開發中是優先級最高的,我們首先保證可以向數據庫提交圖檔,同時可以提起圖檔。這樣在我們完成這個功能後其它開發組就可以使用這項功能了(雖然會有因為圖片太大保存和提取的效率問題,但是它是可以使用的功能了)。我們使用的開發工具是Delphi數據庫是Oracle   迭代1:文件以二進制的形式保存到數據庫中,然後再以二進制的形式從數據庫中提取出來。        通過查找資料後我們決定Oracle數據庫使用Long Raw 類型的字段來保存二進制數據,Delphi裡面使用TBlobField來把流裝載都字段中向數據庫提交。本文的例子簡化了表的設計和使用簡化後的代碼   表的設計 字段名 字段類型 字段長度 字段說明   FID Number   主鍵   F_NAME VarChar2 50 文件名稱   F_BINARY_DATA Long Raw   二進制圖檔數據                    procedure TForm1.Button2Click(Sender: TObject); var   OpenDialog: TOpenDialog;   lFileFullName: string;   lBlobStream: TMemoryStream; begin   lFileFullName := '';       OpenDialog := TOpenDialog.Create(Self);   lBlobStream := TMemoryStream.Create;   try     OpenDialog.InitialDir := extractfilepath(Application.ExeName);     if OpenDialog.Execute then       lFileFullName := OpenDialog.FileName;       if lFileFullName <> '' then     begin       lBlobStream.LoadFromFile(lFileFullName);       ClientDataSet1.Append;       ClientDataSet1.FieldByName('F_ID').Value := 2;       ClientDataSet1.FieldByName('F_NAME').Value := lFileFullName;       (ClientDataSet1.FieldByName('F_BINARY_DATA')
   as TBlobField).LoadFromStream(lBlobStream);       ClientDataSet1.Post;     end;   finally     OpenDialog.Free;     lBlobStream.Free;   end; end;   這樣就可以在向數據庫提交圖檔數據了,這裡圖檔文件先裝載成流然後以二進制流的形式提交到數據庫中的。 提取的方式就是 (ClientDataSet1.FieldByName('F_BINARY_DATA')
   as TBlobField). SaveToStream(lBlobStream); 這樣就完成圖檔文件的保存和提取功能。由於對該項技術不熟悉實現該功能花了我們3小時時間。在下午下班的時候我們提交了可以使用的保存圖檔文件的程序。  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved