在Delphi动态生成定义数据库 (2001年4月6日)
网友更新 分类:数据库 作者: winfit(推荐) 推荐:winfit 阅读次数:313
(http://www.codesky.net)
--------------------------------------------------------------------------------
在开发通用工资管理等应用数据库管理系统时,预先定义好数据库的结构,就不能保证应用系统的通用性。不同的单位需要不同的数据库,为了减少程序的开发量,并保证程序的通用性,就必须在程序运行中根据实际情况定义所需要的数据库。
在Delphi开发环境中,定义数据库通常需要运行Data Base Desktop。在程序运行中使用组件TTable也可以根据需要定义和修改数据库的结构。
定义标准数据库
定义数据库时数据库文件信息和数据库结构信息是必需的,如数据库文件的完整路径,数据库类型,数据库的字段名、类型、长度等。在Delphi程序中可以定义三种标准类型的数据库,DBASE数据库、Paradox数据库、ASCII数据库。
下面给出的过程已在WIN95Delphi3.0C/S下运行通
过。
procedure ZldcreateTable;
var
zldT:TTable;
begin
zldT:=TTable.Create(Self);
with zldT do
begin
DatabaseName:='DBDEMOS';{预定义的别名数据库工作区名}
TableName:='ZLDDBASE';{将定义的数据库名}
TableType:=ttDbase;{数据库类型,可为ttParadox、ttASCII、ttDbase}
with FieldDefs do{数据库结构信息}
begin
Clear;
Add('ZLS',ftInteger,0,false);
Add('ZLD',ftBoolean,0,false);
Add('ZEZ',ftString,10,false);
Add('XL',ftDate,0,false);
{....} //------Add Other Fields Here
end;
with IndexDefs do{索引文件信息}
begin
Clear;
Add('Primary','ZEZ',[ixPrimary,ixUnique]);
{....} ////------Add Other Indexes Here
end;
CreateTable; //---- dynamically Create Table;
end;
end;
通过以上方法建立数据库,如果已经存在同名数据库,将被覆盖,数据将全部丢失。
当修改一个数据库的结构时,也可以利用TTable的方法CreateTable。先打开欲修改的数据库,取得该数据库的结构信息,再对其修改,然后用修改后的结构信息重新建立一个新数据库,再将原数据库中相同的列写入新数据库中,删除原数据库,改新数据库名为原数据库名即可。