学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> Delphi >> Delphi开发工具中如何访问数据库结构


Delphi开发工具中如何访问数据库结构


  在开发数据库软件的过程中,由于实际需求不断发生变化,数据库结构也将随之改变,这会给文档更新工作带来很大困难。如果能够用软件自动获得数据库的结构信息并生成报告文件,将减轻软件的文档工作量。

  1 TSession对象

  为了管理应用程序与数据库系统的多重连接,Delphi提供了TSession对象。Delphi中的数据访问对象(Data Access Object)均包含Session属性,用来指向与之对应的TSession对象。如果应用程序需要同时建立对数据库系统(尤其是BDE数据库)的多个连接,就必须定义多个TSession对象,属于不同连接的数据访问对象的Session属性不能相同,否则将无法同时使用。

  在数据库应用程序运行时,Delphi会自动生成一个缺省TSession对象,名字为Session,数据访问对象在缺省情况下均与之相连。

  TSession对象除了自动管理数据库连接外,还能够取得数据库信息。下面就分别介绍这方面的函数。

  2 获取数据库别名信息

  TSession对象在获取数据库别名方面有3个函数/过程:

以下是引用片段:
  procedure TSession.GetAliasNames(List: TStrings);
  procedure TSession.GetAliasParams(const AliasName: string; List: TStrings);
  function TSession.GetAliasDriverName(const AliasName: string): string;

  GetAliasNames用来获得所有的BDE别名名称,结果保存在变量List中;GetAliasParams用来获得某个BDE别名的参数,结果保存在变量List中;GetAliasDriverName用来取得某个BDE别名使用的数据库驱动程序的名字。

  这3个函数不太复杂,就不多加介绍了。一般情况下,我们只需要使用GetAliasNames即可。

  3 获取数据表信息

  在知道了数据库别名后,如何取出该别名对应数据库中包含的数据表呢?可以使用TSession对象中的 GetTableNames过程。该过程描述如下:

以下是引用片段:
procedure TSession.GetTableNames(const DatabaseName, Pattern: string;

  各参数意义如下:

  DatabaseName:数据库别名;

  Pattern:过滤器,用来过滤结果,可以使用通配符。比如“*.dbf”,“t*” 等。如果为空字符串,则表示不需要过滤;

  Extensions:为布尔量,表示是否显示数据表扩展名。该参数只对DBF和Paradox数据库有效;

  SystemTables:为布尔量,表示是否显示系统数据表;

  List:为返回结果,结果按字母顺序排序。

  4 获取数据域和索引信息

  在取得了数据表信息后,应使用TTable对象访问该数据表的具体信息。对应函数如下:

以下是引用片段:
  procedure TDataSet.GetFieldNames(List: TStrings);
  procedure TTable.GetIndexNames(List: TStrings);

  GetFieldNames用来取得数据表中的各个域名,GetIndexNames用来取得数据表中的各个索引名。

  另外,可以进一步使用TDataset和TTable中的两个属性TDataSet.FieldDefs.Items[] 和 TTable.IndexDefs.Items[]来访问具体的数据域信息和索引信息。它们分别是由TFieldDef和TIndexDef组成的数组。

  TFieldDef描述如下:

点击放大此图片

  TIndexDef描述如下:

点击放大此图片

  TFieldType定义如下:

以下是引用片段:
  TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean,
  ftFloat,ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes,
  ftAutoInc,ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle,
  ftTypedBinary,ftCursor);

  TIndexOptions定义如下:

以下是引用片段:
TIndexOptions = set of (ixPrimary, ixUnique, ixDescending, ixExpression, ixCaseInsensitive);

  它们的具体意义可以参见Delphi帮助。

  5 应用实例

  使用下面的程序片段即可获得指定数据库中指定表的域定义和索引定义。ListBox1、ListBox2 和 ListBox3 为Form1中定义的三个列表框,用于显示结果。

以下是引用片段:
Var  Alias,TableName:String;
Table1:TTable;
Begin
Alias:='fjs';  TableName:='d*';    //初始化
Session.GetTableNames(Alias, {别名}
                      TableName, {过滤器}
                      True, {是否显示文件扩展名(对DBF) }
                      False, {是否显示系统表}
                      ListBox1.Items);
If ListBox1.Items.Count=0 then
  Begin
    MessageDlg('数据库'+Alias+'中没有数据表'+TableName, mtError, [mbOK], 0 );
  Exit;
End;
Table1:=TTable.Create(nil);
Table1.DatabaseName :=Alias;
Table1.TableName := ListBox1.Items.Strings[0];
{取得表中字段名及索引名}
Table1.Open;
if Table1.Active then
begin
Table1.GetFieldNames(ListBox2.Items);
   Table1.GetIndexNames(ListBox3.Items);
end;
//… 此时结果在ListBox2和ListBox3中
//
Table1.Destroy;
end;

  6 小结

  通过上面讨论和实例证明,利用Delphi语言开发数据库软件管理系统,关键技术都已得到解决。

  参考文献

  [1] (李维 编著).《DELPHI 7高效数据库程序设计》机械工业出版社2003.1

  [2] 郭旭等 著.《Delphi6应用开发指南》清华大学出版社2004.6

  [3] 大富翁http://www.delphibbs.com/

  收稿日期:4月4日 修改日期:4月9日

  作者简介:于海生,男,1980年生于辽宁省丹东市,黑龙江大庆人,2002年毕业于辽宁化工大学计算机科学与技术专业,助理工程师,研究方向为钻井计算机软件开发与应用。


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
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 ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

学习下...
游客 发表于2008-6-10 9:36:37
对"Delphi开发工具中如何访问数据库结构"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 Delphi开发工具中如何访问数据库结构 相关内容
Google搜索中 Delphi开发工具中如何访问数据库结构 相关内容
雅虎中 Delphi开发工具中如何访问数据库结构 相关内容
Sogou搜索中 Delphi开发工具中如何访问数据库结构 相关内容

相关软件 最新回复帖子:

·Delphi开发工具中如何访问数据库结构
·CAD绘制规定边长的封闭三角形
·为何电脑启动以后桌面上无任何图标?
·Photoshop 6.0 Beta功能初探之一
·DW Ultradev打造留言本(一)
·DW Ultradev打造留言本(二)
·AutoCAD 中自定义线型的小技巧
·Photoshop精妙合成图制作
·体验Vue 5 Esprit丰富的材质库:材质分类
·将Photoshop创建的位图导入Flash MX


  相关软件 Delphi开发工具中如何访问数据库结构相关文章
Delphi版模仿熊猫烧香病毒核心源码 经验技巧:分享两条Delphi开发经验
Delphi 中动态链接库(dll)的建立和使用 熊猫烧香核心源码(Delphi模仿版本)
Delphi中Hash表的使用方法 用Delphi 实现自定义颜色对话框及其构件
Delphi 中使用计算出的字段 DBGrid中的下拉列表和查找字段编程方法
数据库应用程序开发中图像数据的存取技术 TDBGrid控件中对多个记录的处理
用Delphi实现将纯文本资料转入数据库 在Delphi中建立和使用别名
Delphi编程实现3DS动画的播放 在DBGrid中实现Copy、Paste功能
用Delphi编程访问SQLServer数据库 在Delphi动态生成定义数据库
Delphi筛选数据 用DELPHI 3.0制作应用软件经验谈
Delphi中数据文件路径的管理 Delphi中建表