每日笔记——Delphi创建.db数据库

  1. 还是前几天说的,用ADO链接数据库,后来自己突发奇想同代码创建.db数据库。可是自己上网搜"Delphi如何通过ADO创建.db数据库"的时候根本搜不到结果,就在自己灰心的时候,突然反应过来,我去,前几天不是看如何链接.db数据库的时候有大神说过.db是dbas或者说vfox数据库吗,于是转变思路搜“用Delphi动态建 dbase数据库”终于成功了,现在也同样怕忘记,现在转过来方便自己以后复习。转载自http://blog.csdn.net/rznice/article/details/6018922。

    定义标准数据库:

          定义数据库时,数据库文件信息和数据库结构信息是必需的,如数据库文件的完整路径,数据库类型,数据库的字段名、类型、长度等。在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-三月

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

猜你喜欢

转载自blog.csdn.net/www1157763637qqcom/article/details/23051211