项目迭代开发手记--文件分割存储用例的实现过程(1)
2006-02-04 13:54:23 来源:WEB开发网核心提示:摘 要 本文详细描述了在尝试使用极限编程在软件开发中的一个实现例子,在小步迭代开发中逐步的实现用例需要的功能,项目迭代开发手记--文件分割存储用例的实现过程(1),同时每个迭代都能集成实现的功能,关键字 极限编程 在一次项目开发中我们开发组遇到了一个需求,提取的方式就是(ClientDataSet1.FieldByN
摘 要 本文详细描述了在尝试使用极限编程在软件开发中的一个实现例子,在小步迭代开发中逐步的实现用例需要的功能,同时每个迭代都能集成实现的功能。
关键字 极限编程
在一次项目开发中我们开发组遇到了一个需求,该需求的要使用的技术是我们所不熟悉的,就是说在开发过程中我们必须逐步的掌握该项技术,同时希望能够尽可能的保持代码有好的结构,因为在不断增加功能的过程中,会让代码逐渐的变得复杂降低可阅读性。
该需求的用例很简单,就是把图档文件保存到数据库中,同时在需要时提取出来显示。但是有的图档文件会比较大,在向数据库提交过程中可能会有性能问题,还有图档文件格式的问题,(.bmp,.Jpeg)
小组讨论的时,大家提出了首先要对要保存的数据进行压缩,同时对较大的文件要分割成合适的块,这样提交到数据库中才不会有性能问题。这样提取图档文件过程中就得对分割压缩的数据进行解压和拼接才能获得原始数据,还有就是文件格式的转换问题。
该项功能我想对于熟悉的开发人员来说可能很简单,但是由于我们组的开发人员没有类似的开发经验,就不可能在一开始获得优良的设计,只能在不断的开发进程中改进你的设计,在以往的开发中我们尝试过小步迭代开发的好处,就是在不断累积中实现需求的功功能,同时减少过程中的挫折感——你的每一步都很好的实现了需求的功能,还能每日集成你的软件,实时掌握你的开发进度。
每次迭代实现认为优先级高的功能。
我们认为图档文件的保存和提取在开发中是优先级最高的,我们首先保证可以向数据库提交图档,同时可以提起图档。这样在我们完成这个功能后其它开发组就可以使用这项功能了(虽然会有因为图片太大保存和提取的效率问题,但是它是可以使用的功能了)。我们使用的开发工具是Delphi数据库是Oracle
迭代1:文件以二进制的形式保存到数据库中,然后再以二进制的形式从数据库中提取出来。
通过查找资料后我们决定Oracle数据库使用Long Raw 类型的字段来保存二进制数据,Delphi里面使用TBlobField来把流装载都字段中向数据库提交。本文的例子简化了表的设计和使用简化后的代码
表的设计
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小时时间。在下午下班的时候我们提交了可以使用的保存图档文件的程序。
字段名 | 字段类型 | 字段长度 | 字段说明 | |
FID | Number | 主键 | ||
F_NAME | VarChar2 | 50 | 文件名称 | |
F_BINARY_DATA | Long Raw | 二进制图档数据 | ||
as TBlobField).LoadFromStream(lBlobStream); ClientDataSet1.Post; end; finally OpenDialog.Free; lBlobStream.Free; end; end; 这样就可以在向数据库提交图档数据了,这里图档文件先装载成流然后以二进制流的形式提交到数据库中的。 提取的方式就是 (ClientDataSet1.FieldByName('F_BINARY_DATA')
as TBlobField). SaveToStream(lBlobStream); 这样就完成图档文件的保存和提取功能。由于对该项技术不熟悉实现该功能花了我们3小时时间。在下午下班的时候我们提交了可以使用的保存图档文件的程序。
[]
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››开发一个自己的HTML在线编辑器(一)
- ››开发一个自己的HTML在线编辑器(二)
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››开发移动 Web Ajax 应用
- ››开发者眼中的iPhone与Android
- ››迭代开发:WebSphere adapters 7.0 让您更灵活的开...
- ››开发者或想使用的10个Android2.2新特性
- ››开发实例:Android 身高计算器的实现
- ››开发 Derby 的表功能
- ››开发火爆 博看文思称 iPhone 可作\血压计\
更多精彩
赞助商链接