- 还是前几天说的,用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-三月
在文档的头部份描述了表的字段结构,在下面则是数据区域。
每日笔记——Delphi创建.db数据库
最新推荐文章于 2022-10-02 09:59:55 发布