Delphi开发工具中如何访问数据库结构[2]
获取数据域和索引信息
在取得了数据表信息后 应使用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帮助
应用实例
使用下面的程序片段即可获得指定数据库中指定表的域定义和索引定义 ListBox ListBox 和 ListBox 为Form 中定义的三个列表框 用于显示结果
以下是引用片段 Var Alias TableName:String Table :TTable Begin Alias:= fjs TableName:= d* //初始化 Session GetTableNames(Alias {别名} TableName {过滤器} True {是否显示文件扩展名(对DBF) } False {是否显示系统表} ListBox Items) If ListBox Items Count= then Begin MessageDlg( 数据库 +Alias+ 中没有数据表 +TableName mtError [mbOK] ) Exit End Table :=TTable Create(nil) Table DatabaseName :=Alias Table TableName := ListBox Items Strings[ ] {取得表中字段名及索引名} Table Open if Table Active then begin Table GetFieldNames(ListBox Items) Table GetIndexNames(ListBox Items) end //… 此时结果在ListBox 和ListBox 中 // Table Destroy end
小结
通过上面讨论和实例证明 利用Delphi语言开发数据库软件管理系统 关键技术都已得到解决
参考文献
[ ] (李维 编著) 《DELPHI 高效数据库程序设计》机械工业出版社
[ ] 郭旭等 著 《Delphi 应用开发指南》清华大学出版社
[ ] 大富翁 // delphibbs /
收稿日期 月 日 修改日期 月 日
作者简介 于海生 男 年生于辽宁省丹东市 黑龙江大庆人 年毕业于辽宁化工大学计算机科学与技术专业 助理工程师 研究方向为钻井计算机软件开发与应用
lishixinzhi/Article/program/Delphi/201311/8543