内存数据表(Memory Table)
对于数据不在数据库中﹐但是在应用程序执行时却需要经常参考到的数据﹐可以使用内存数据表来解决。
[范例:创建内存数据表]
procedure TForm1.CreateMemoryTable
begin
with dmMemoryTable.scdsMemory do
begin
with FieldDefs.AddFieldDef do
begin
DataType:=ftInteger
Name:='TID'
end
with FieldDefs.AddFieldDef do
begin
DataType:=ftString
Size:=20
Name:='TSValue'
end
with FieldDefs.AddIndexDef do
begin
Fields:='TID'
Name:='idxTID'
end
CreateDataSet
IndexDefs.Update
IndexName:='idxTID'
end
end
procedure TForm1.FillTempData
begin
InsertData(1,'custorderno')
InsertData(2,'fcty')
InsertData(3,'poid')
end
procedure TForm1.InsertData(const iTD:Integer const sValue:String)
begin
with dmMemoryTable.scdsMemory do
begin
Insert
FieldByName('TID').Value:=iTD
FieldByName('TSValue').Value:=sValue
post
end
end
内存数据表非常适合使用在少量﹐经常使用的数据应用中﹐但它不适合用来储存大量的临时数据﹐如超过了数百笔数据的情形就不适用了。
获取数据域和索引信息
在取得了数据表信息后 应使用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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)