在Delphi动态生成定义数据库 |
在开发通用工资管理等应用数据库管理系统时,预先定义好数据库的结构,就不能保证应用系统的通用性。不同的单位需要不同的数据库,为了减少程序的开发量,并保证程序的通用性,就必须在程序运行中根据实际情况定义所需要的数据库。 在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。先打开欲修改的数据库,取得该数据库的结构信息,再对其修改,然后用修改后的结构信息重新建立一个新数据库,再将原数据库中相同的列写入新数据库中,删除原数据库,改新数据库名为原数据库名即可。 |