每日笔记——Delphi创建.db数据库
2014-04-06 22:29
316 查看
还是前几天说的,用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程序中可以定义三种标准类型的数据库,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如何通过ADO链接.db(.dbf)文件
- 【MySQL学习笔记】2:创建/删除/查看数据库,数据表
- 在单机上创建物理的 Oracle9i standby 数据库笔记 from:www.dbanotes.net
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- 数据库笔记10:插入数据 创建和操纵表
- 创建数据库和表空间笔记1
- EF Code First学习笔记:数据库创建
- Linux下用mysql_install_db创建数据库实例
- RMAN 创建catalog 数据库创建笔记
- 1 笔记:数据库创建
- Activiti学习笔记一:创建数据库表
- 14.Delphi简单数据库应用的创建及MASTAPP介绍
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- Oracle培训笔记 2011/7/24 创建数据库
- 【Oracle笔记】5.创建数据库之建库的前提条件
- python网络编程学习笔记(九):数据库客户端 DB-API
- Django 初探--Django的开发服务器及创建数据库(笔记)
- python网络编程学习笔记(九):数据库客户端 DB-API
- Qt 判断数据库db中 table是否已经创建