获取数据域和索引信息
在取得了数据表信息后应使用TTable对象访问该数据表的具体信息对应函数如下
以下是引用片段
procedureTDataSetGetFieldNames(List:TStrings);
procedureTTableGetIndexNames(List:TStrings);
GetFieldNames用来取得数据表中的各个域名GetIndexNames用来取得数据表中的各个索引名
另外可以进一步使用TDataset和TTable中的两个属性TDataSetFieldDefsItems[] 和 TTableIndexDefsItems[]来访问具体的数据域信息和索引信息它们分别是由TFieldDef和TIndexDef组成的数组
TFieldDef描述如下
TIndexDef描述如下
TFieldType定义如下
以下是引用片段
TFieldType=(ftUnknownftStringftSmallintftIntegerftWordftBoolean
ftFloatftCurrencyftBCDftDateftTimeftDateTimeftBytesftVarBytes
ftAutoIncftBlobftMemoftGraphicftFmtMemoftParadoxOleftDBaseOle
ftTypedBinaryftCursor);
TIndexOptions定义如下
以下是引用片段
TIndexOptions=setof(ixPrimaryixUniqueixDescendingixExpressionixCaseInsensitive);
它们的具体意义可以参见Delphi帮助
应用实例
使用下面的程序片段即可获得指定数据库中指定表的域定义和索引定义ListBoxListBox 和 ListBox 为Form中定义的三个列表框用于显示结果
以下是引用片段
Var AliasTableName:StringTable:TTableBeginAlias:=fjs TableName:=d* //初始化SessionGetTableNames(Alias {别名} TableName {过滤器} True {是否显示文件扩展名(对DBF) } False {是否显示系统表} ListBoxItems)If ListBoxItemsCount= then Begin MessageDlg(数据库+Alias+中没有数据表+TableName mtError [mbOK] ) ExitEndTable:=TTableCreate(nil)TableDatabaseName :=AliasTableTableName := ListBoxItemsStrings[]{取得表中字段名及索引名}TableOpenif TableActive thenbeginTableGetFieldNames(ListBoxItems) TableGetIndexNames(ListBoxItems)end//… 此时结果在ListBox和ListBox中//TableDestroyend
小结
通过上面讨论和实例证明利用Delphi语言开发数据库软件管理系统关键技术都已得到解决
参考文献
[] (李维 编着)《DELPHI 高效数据库程序设计》机械工业出版社
[] 郭旭等 着《Delphi应用开发指南》清华大学出版社
[] 大富翁http://wwwdelphibbscom/
收稿日期月日 修改日期月日
作者简介于海生男年生于辽宁省丹东市黑龙江大庆人年毕业于辽宁化工大学计算机科学与技术专业助理工程师研究方向为钻井计算机软件开发与应用
[] []