现在的位置: 首页 > 综合 > 正文

delphi 数据库的动态建立

2013年09月02日 ⁄ 综合 ⁄ 共 3390字 ⁄ 字号 评论关闭

定义标准数据库:

      定义数据库时,数据库文件信息和数据库结构信息是必需的,如数据库文件的完整路径,数据库类型,数据库的字段名、类型、长度等。在delphi程序中可以定义三种标准类型的数据库,DBASE数据库、Paradox数据库、ASCII数据库。

使用:TTable 建立。

procedure CreateDB();

    var table1:TTable;

begin

    table1:=ttable.create(self);

    with table1 do

    begin

        active:=false;

        //DatabaseName:="c:/dbtemp";{预定义的别名数据库工作区名}

        tablename:='ljh1.db'; {将定义的数据库名}

        tabletype:=ttparadox; {数据库类型,可为ttParadox,ttASCII,ttDbase}

        {tabletype属性为ttDefault表示数据库类型与TableName指定值的扩展名对应}

        with fielddefs do {数据库结构信息:此方法为ljh.db增加字段}

        {调用TTable.FidldDefs对象的Add方法向数据库表中添加字段。Add有4个参数:

    字段名:string。

    字段类型:TfieldType。

    字段大小:Word。一般只对String和Memo类型使用。

    字段是否NotNull: Boolean。

         }

        begin

            clear;

            add('yj',ftdate,0,false);

            add('zp', ftstring,10,false); {增加具体的字段名、类型}

            add('zdm',ftinteger,0,false);

        end;

        With indexdefs do {此方法为ljh.db增加索引字段}

        {使用TTable.IndexDefs.Add()方法定义索引。Add有三个参数:

    索引名:string;

    索引字段名:string;

    索引类型:TIndexOptions;

        }

        Begin

            Clear;

            Add('yjindex','yj',[ixprimary]);

        end;

        createtable;

    end;

end;

使用SQL语句建立:

procedure SQLCreateDb();

   var table2:tquery;

begin

    table2:=tquery.create(self);

    with table2 do

    begin

        with sql do

        begin

            clear;

            add('create table "ljh2.db"');

            add('(yj date,'); {注意引号中的(}

            add('zp char(10),');

            add('zdm int)'); {注意引号中的)}

        end;

        execsql;

        sql.clear;

        sql.add('create index yj on "ljh.db" (yj)');{此sql语句为ljh.db增加索引字段}

        execsql;

    end;

end;

会在当前目录下生成以DB结尾的数据库文件。

 

以上是Delphi创建内存表步骤。

 

 

 

 

kbmMemTable使用简述:

      kbmMemTable创建步骤:

1. 创建一个kbmMemTable对象实例。

2. 调用kbmMemTable.FidldDefs对象的Add方法向数据库表中添加字段。Add的方法和Delphi相同。

3. 使用kbmMemTable.IndexDefs.Add()方法定义索引。Add的方法和Delphi相同。

4. 调用kbmMemTable的CreateTable。

重要的区别:因为kbmMemTable不需要BDE的支持。所以不要指明DatabaseName, TableName和TableType三个属性。

代码如下:

with kbmMemTable1 do

begin

    with kbmMemTable1.FieldDefs do

    begin

        Clear;

        Add('Period', ftInteger, 0, false);

        Add('VALUE', ftLargeInt, 0, false);

        Add('BytesField', ftBytes, 20, false);

        Add('Color', ftInteger, 0, false);

        Add('Date', ftDate, 0, false);

        Add('Memo', ftMemo, 0, false);

        Add('AutoInc', ftAutoInc, 0, false);

    end;

    with kbmMemTable1.IndexDefs do

    begin

        Clear;

        Add('Index1', 'VALUE', []);

    end;

    CreateTable;

end;

 

 

与Delphi创建内存表的对比

主从表功能:

     kbmMemTable可以象其它TDataSet一样,通过设置MasterSource和MasterField来简单的完成主从表的操作。

SQL功能:

    没有发现kbmMemTable可以支持SQL语句的操作。它提供按字段排序和对排序字段的查找功能。

 

 

kbmMemTable特点:

从其它TDataSet得到数据。

代码如下:

LoadFromDataSet(Table1, [mtcpoStructure, mtcpoProperties]);

这样kbmMemTable就完全得到来自一个DataSet对象中的全部数据.

保存和载入内存表中数据的功能

Delphi的TTable不提供SaveToFile功能。

kbmMemTable提供保存到文件的功能,保存的文件有两种格式:

Options: TkbmMemTable.SaveFlags;

1. 二进制格式。kbmMemTable.SaveToBinaryFile('c:/test.bin', Options).

kbmMemTable1.LoadFromBinaryFile('c:/test.bin')

2. .csv格式。kbmMemTable.SaveToFile('c:/test.csv', Options);

kbmMemTable1.LoadFromFile('c:/test.csv')

(一种Excel支持的文档格式)打开后的内容如下:

@@FILE VERSION@@ 200

@@TABLEDEF START@@

Period=Integer,0,"Period","",10

VALUE=LargeInt,0,"VALUE","",15

BytesField=Bytes,20,"BytesField","",10

Color=Integer,0,"Color","",10

Date=Date,0,"Date","",10

Memo=Memo,0,"Memo","",10

AutoInc=AutoInc,0,"AutoInc","",10

CALC=String,20,"CALC","",20

@@TABLEDEF END@@

Period VALUE BytesField Color Date Memo AutoInc CALC

1 198 0 02/11/2001 This is a memo%n2001-11-2 10:19:52 1 0 1-二月

2 196 3 03/11/2001 This is a memo%n2001-11-2 10:19:52 2 1 2-三月

在文档的头部份描述了表的字段结构,在下面则是数据区域。

抱歉!评论已关闭.