Delphi开发工具中如何访问数据库结构,-Delphi-优质IT资源分享社区

yutingzhidong
总版主
总版主
  • UID2
  • 粉丝20
  • 关注1
  • 发帖数11
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:222回复:0

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

楼主#
更多 发布于:2016-06-14 11:58

在开发数据库软件的进程中,由于实际需求不断发生变化,数据库构造也将随之改动,这会给文档更新作业带来很大艰难。假如能够用软件主动获得数据库的构造信息并生成陈述文件,将减轻软件的文档作业量。
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年结业于辽宁化工大学计算机科学与技能专业,助理工程师,研讨方向为钻井计算机软件开发与运用。





优质IT资源分享社区为你提供此文。
本站有大量优质Delphi教程视频,资料等资源,包含Delphi基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。
Delphi教程视频
优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

微信小程序开发

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客