文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发Delphi为Delphi提供Pack功能一例
精品推荐
特别推荐
·利用Delphi编写Socket通信程序
·拦截其它程序的网络数据封包
·Delphi编程根据IP地址得到主机名
·Delphi 程序员代码编写标准指南
·用DELPHI开发自动化服务器
·将日期转化为汉语的形式
·加密ACCESS数据库增加安全性
·使用TCP/IP协议实现聊天程序
·在Delphi中控制扫描仪
热点TOP10
·Delphi中DLL的创建和使用(1)
·用Delphi实现WinSocket高级应用
·利用Delphi编写Socket通信程序
·DBGrid使用全书(三)
·DELPHI多层分布式开发(2)
·实现关键字查找word文档里相匹配的内容
·实现高速文件拷贝
·用Delphi实现动态获取版本信息
·使用TCP/IP协议实现聊天程序
·在Delphi中控制扫描仪
·实现webbrowser中的打印、复制、全选等编辑功能
·拦截其它程序的网络数据封包
·Delphi下的ADO使用方法!
·DELPHI多层分布式开发(1)
·Delphi中利用钩子实现QQ聊天窗口的修改
·Delphi多层开发方案比较
·Delphi下“培养”自己的简单木马
·Delphi数据库控件使用入门
·Delphi的拨号连接类
·在Delphi中实现数据分析模块的动态报表

为Delphi提供Pack功能一例

日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]



  Delphi目前已经是国内常见的数据库编程工具,它在各方面表现不错,在支持大型多层数据库结构的同时也完全支持本地数据库。对于本地数据库中Delphi对FoxPro的支持也不错,我曾经对VB、FoxPro、Delphi的数据库操作速度进行比较,发现除了启动速度较慢外,其它各项Delphi均排在首位。而且Delphi几乎支持所有原先FoxPro所拥有的功能,对于有一定编程经验的人来说,Delphi成了编写数据库软件的一把利器,因而Delphi迅速流行起来,Delphi在我国也占有一席之地。

  但是我在使用Delphi编程的过程中发现它也有不如人意的地方,特别是在本地数据库dBase和Paradox方面,它居然不支持十分有用的Pack和Undelete功能。对于数据库来说,因为是一个顺序存储文件,在删除部分记录时一般采用了软删除技术,也就是说将要删除的记录标记已删除的标记,但并不立即从物理上删除这些记录(删除后库文件大小不变)。

  这样做可以避免仅仅删除一条记录就要将整个数据库重新写入存储器,提高了读写的效率。但是如果数据库长期不对已经被标记为删除的记录进行整理和真实删除,数据库就会越来越大,其中无用的数据所占的比率越来越大,使得数据库的读写效率迅速下降,而且造成查询速度的减慢。特别是在编写人事管理数据库应用软件时,库内要保存大量的图形文件(人员的照片),而这些数据还时常需要添加和删除,没用的数据不能"Pack"将占用巨大的硬盘空间,而且还将降低系统的运行速度。

  这是编写数据库软件的人必须考虑的一个问题。经过再三查找,我找到一些资料,解决了如何对数据库进行pack,下面是其中的核心程序的一个例子,在看例子之前,我先做一些说明:

  1. 对于dBase和Paradox库,其Pack原理是不同的:如果是Paradox 表, 必须调用 DbiDoRestructure,重建数据库结构;如果是 dBASE 表, 只需要调用DbiPackTable。

  2. 在做Pack删除时,必须以独占方式打开数据库时。具体请参考一下的例子。

   (为了节省篇幅,例子中只给出关键性的程序段)

  implementation

   uses BDE;//做PACK必须引用次单元里的函数

   {$R *.DFM}

    procedure TfrmPack.FormCreate(Sender: TObject);

    var

     DBName:String;

    begin

    DBName:=ExtractFilePath(Application.ExeName);//得到数据库的位置

     {设置Table}

      tblDBASE.DatabaseName:=DBName;

      tblParadox.DatabaseName:=DBName;

      tblDBASE.TableName:='dbsTest.dbf';

      tblParadox.TableName:='pdxTest.db';

      tblDBASE.Active:=True;

      tblParadox.Active:=True;

      end;

     {物理删除数据库记录Pack a Paradox or dBASE table}

      // The table must be opened execlusively before calling this procedure...

      procedure TFrmPack.PackTable(FTable: TTable);

      var

       Props: CURProps;

        hDb: hDBIDb;

       TableDesc: CRTblDesc;

      begin

       FTable.Active := False;

       {当数据库打开失败时,这个循环语句能够让用户重试}

       repeat

       try

        FTable.Exclusive := True;

        FTable.Active := True;

        {如果正常打开数据库,则退出循环}

        Break;

        except

        on EDatabaseError do

        if Application.MessageBox(

         '以独占方式打开数据库时,出现错误---重试否?',
[1] [2] [3] 下一页 




上一篇:浅述Delphi下的OpenGL图形开发

下一篇:第四章 文本编辑器的设计(一)

为Delphi提供Pack功能一例 相关文章:
·暗黑破坏神2:毁灭之王 符文物品、符石功能、赫拉笛克方块等 - 游戏秘籍
·屏蔽五项网络功能 让XP系统极速狂飙
·免费申请QQ(腾迅专门为国外用户提供)
·板载RAID功能制作磁盘阵列并安装操作系统
·ADSL Modem路由功能的配置
·用C语言实现Ping程序功能
·用好Windows Vista无损调整硬盘分区功能
·只需屏蔽五项功能让XP速度更快
·VB设计有语音报时和报警功能的闹钟
·认识QQ新版新功能:QQ等级加速
为Delphi提供Pack功能一例 相关软件:
·Windows XP Service Pack 2简体中文版
·公司企业网站管理系统模板功能强大版
·QQ显IP 显隐身超级版 2款不同功能最新QQ版本 友情下载
·金山词霸2006 SP1 with 牛津英汉双解词典 全功能第二版
·功能较强的一个FLASH编辑器
·DelphiV7.0
·史上最强全功能Win98精简版 39MB 能够在U盘运行的win98
·Windows 2000 Service Pack 3 简体中文版
·多功能桌面时钟 V3.2
·VideoPackv5.1 汉化零售版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot