Delphi教程,Delphi案例:用Dephi程序维护Paradox 数据表的索引,Delphi源码,Delphi代码,Delphi源码下载,Delphi实例,Delphi安全漏洞,
学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> Delphi >> 用Dephi程序维护Paradox 数据表的索引


用Dephi程序维护Paradox 数据表的索引


 ≡谑菘獗喑讨?,索引文件对于改善数据查询速度有着举足轻重的作用,充分使用索引文件可以极大改善数据库应用程序的性能,这一点恐怕是难以否认的.

  在应用过程中,用户的查询条件可能是多种多样的,如果能根据用户查询建立和选择索引,对于保证应用程序的性能,无疑是很有帮助的.

  另外,由于停电等意外事故很容易造成数据库中的索引文件未及时更新甚至于损坏,此时如果应用程序再出几个错误信息,无疑将使用户的处境雪上加霜.

  因而,动态维护数据库索引文件,将使你的数据库应用程序更有稳定性和可靠性.笔者将以Delphi编程中常用的Paradox数据库为例,介绍数据库索引文件的动态维护.

  Paradox 数 据 表 索 引 分 为 主 索 引(Primary Index) 即 关 键 字(Primary Key) 索 引 和 次 索 引(Secondary Index), 其 中 主 索 引 对 应.PX 文 件, 次 索 引 对 应.XG* 和.YG* 文 件.

一. 创 建 表 索 引
  (1) 用Table.AddIndex 来 实 现
  方 法:AddIndex( IndexName,FieldNames,Options )
  其 中:( 详 见Delphi 帮 助)
  IndexName: 索 引 名 称, 仅 在 指 定 次 索 引 时 有 作 用.
  FieldNames: 索 引 域, 可 指 定 多 个 域, 各 域 之 间 用 分 号 隔 开, 如Field1;Field2;Field3
  Options: 索 引 选 项, 可 为[ixPrimary, ixUnique, ixDescending, ixCaseInsensitive, ixExpression]
  其 中:
  ixPrimary : 建 立 的 索 引 为 主 索 引( 不 适 用 于dBase 数 据 表).
  ixUnique : 不 允 许 重 复 值 的 索 引.
  ixDescending: 按 降 序 索 引.
  ixCaseInsensitive: 索 引 排 序 时 按 忽 略 大 小 写( 不 适 用 于dBase 数 据 表).
  ixExpression: 建 立 表 达 式 索 引( 适 用 于Delphi3.0, 仅 适 用 于dBase 数 据 表).
  ixNonMaintained: 是 否 不 需 要BDE 自 动 维 护( 适 用 于Delphi1.0).

  下 面 是 一 个 例 子:

  假 设 有 一 个 存 放 通 讯 录 数 据 表MyComm.DB( 类 型 为Paradox) 存 放 于 本 地 目 录d:\mynote 下, 现 建 立 一 个 主 索 引( 索 引 域 为 编 号ID) 和 一 个 次 索 引( 索 引 域 为 编 号ID 和 姓 名Name, 索 引 名 称 为NameIndex).

with table1 do
begin
close;
DatabaseName := d:\MyNote;
TableName := MyComm.DB;
Open;

{建立主索引 }
AddIndex(,ID,[ixPrimary]);

{建立次索引 }
AddIndex(NameIndex,ID;Name,[]);

close;
end;


(2)用SQL来实现
对Paradox数据表来说,用SQL只能建立次索引.
在SQL语法中,用来建立索引的语句是:
Create Index IndexName On TableName
(IndexField1,IndexField2,..)
其中:
IndexName为一个次索引的名称,如MySecIndex1等.
TableName为对应数据表的名称,如MyTable等.
TableName后面为索引域列表,所有索引域有圆括号括起来,
各索引域之间用逗号隔开.
 

  下 面 是 一 个 例 子:

  假 设 有 一 个 存 放 通 讯 录 数 据 表MyComm.DB( 类 型 为Paradox) 存 放 于 本 地 目 录

  d:\mynote 下, 现 建 立 一 个 次 索 引( 索 引 域 为 编 号ID 和 姓 名Name, 索 引 名 称 为NameIndex).

with query1 do
begin
close;
DatabaseName := d:\MyNote;

{建立次索引NameIndex}
sql.clear;
sql.add( Create Index NameIndex On MyComm(ID,Name) );
execSql;
end;
 

二. 删 除 表 索 引
  (1) 用Table.DeleteIndex 来 实 现
  DeleteIndex 只 能 删 除 次 索 引 名 称.
  方 法:DeleteIndex( IndexName )
  其 中:( 详 见Delphi 帮 助)
  IndexName: 次 索 引 名 称.

  下 面 是 一 个 例 子:

  假 设 有 一 个 存 放 通 讯 录 数 据 表MyComm.DB( 类 型 为Paradox) 存 放 于 本 地 目 录

  d:\mynote 下, 现 有 一 个 次 索 引( 索 引 域 为 编 号ID 和 姓 名Name, 索 引 名 称 为NameIndex), 将 删 除 之.

with table1 do
begin
close;
Exclusive := true;
DatabaseName := d:\MyNote;
TableName := MyComm.DB;
Open;

{删除次索引}
DeleteIndex(NameIndex);

close;
end;
 

  (2) 用SQL 来 实 现
  在SQL 语 法 中, 用 来 删 除 索 引 的 语 句 是:
  Drop Index TableName.IndexName
  要 删 除 次 索 引 时,IndexName 为 一 个 次 索 引 的 名 称, 如MyTable.MySecIndex1 等.
  要 删 除 主 索 引 时,IndexName 为primary, 如MyTable.primary; 值 得 注 意 的 是, 在 删 除 主 索 引 成 功 后, 数 据 表 的 所 有 次 索 引 也 自 动 删 除.

  下 面 是 一 个 例 子:
  假 设 有 一 个 存 放 通 讯 录 数 据 表MyComm.DB( 类 型 为Paradox) 存 放 于 本 地 目 录
  d:\mynote 下, 已 定 义 一 个 主 索 引( 索 引 域 为 编 号ID) 和 一 个 次 索 引( 索 引 域 为 编 号ID 和 姓 名Name, 索 引 名 称 为NameIndex).
  现 在 因 为 索 引 损 坏, 要 删 除 索 引, 以 便 重 新 索 引.

with query1 do
begin
close;
DatabaseName := d:\MyNote;

{删除次索引NameIndex }
sql.clear;
sql.add( Drop Index MyComm.NameIndex );
execSql;

{删除主索引 }
sql.clear;
sql.add( Drop Index MyComm.Primary );
execSql;
end;
 

三.注意事项:
  (1)在索引更改时,应保证对应的数据表可以以独占方式(Exclusive=true) 打开,否则会引起错误.
  (2)上述方法略加修改后,也可用于dBase,Oracle等其它数据库的数 据表.
  (3)如果需要重新对索引文件进行索引,请参考BDE的Dbi函数说明:
  RegenIndex,RegenIndexes.
  (4)以上程序在Delphi3.0下测试通过。


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"用Dephi程序维护Paradox 数据表的索引"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 用Dephi程序维护Paradox 数据表的索引 相关内容
Google搜索中 用Dephi程序维护Paradox 数据表的索引 相关内容
雅虎中 用Dephi程序维护Paradox 数据表的索引 相关内容
Sogou搜索中 用Dephi程序维护Paradox 数据表的索引 相关内容

相关软件 最新回复帖子:

·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效


  相关软件 用Dephi程序维护Paradox 数据表的索引相关文章
有“背景”的窗体 自定义快速报表的打印预览窗口
用Delphi实现自定义颜色对话框及其构件 Delphi实用编程经验二则