幽雅BDE(一)
(版权声明:本文仅供CSDN使用,其他转载请与作者或CSDN联系)
BDE是Borland Database Engine的缩写,即宝兰的数据引擎,她是BCB最早引入的数据库连接技术,但是土生土长的她现在却落到很少有人问津的地步,最近开发一个Pardox数据库,用到了BDE,重温了一下旧梦,觉得BDE优雅气质仍然,对数据库的管理不比ADO差,而且简捷方便。还是让我们来看看我们的老朋友吧J
一、数据库的别名机制
别名就是用来表示一个数据库资源的名字。简单说就是用别名来告知你用的是什么类型的库(BDE好清楚调用什么样的API来处理),库的名称(好清楚你的库是哪个,位置在哪)等等一系列与其相连的参数。
恰恰就是这个别名的建立,我觉得与数据库的连接要比ADO还方便!
创建别名的其实很简单,把BDE Administrator打开可以看出,BDE Administrator的主窗口由两个面板组成:左边的面板包括Database和Configuration 两个选项卡,其中Database 用来管理数据别名,Configuration用来管理BDE的数据库驱动程序和一些全局参数设置。这里我们将光标放在Database选项卡的Database列表项上单击调出快捷菜单中的new(其实在上面的菜单里也可以找到她),就可以调入新建数据库别名对话框,在弹出的 New Database Alias中会让你通过下拉框选择数据库驱动程序的名称,然后单击OK就行了。当然这个别名是系统默认的,你可以修改。而此时新建的别名自动进入到编辑状态,此时你可以对别名进行编辑,编辑完成之后右击这个别名,在快捷菜单中选Apple(应用),并在弹出的对话框中单击OK,这样就可以保存前面所做的修改了。删除不要告诉我不会吧,你右击这个别名,看一下快捷菜单中有没有一个叫Delete的家伙:P
二、表的建立与删除
表的建立与删除是对数据库操作的关键,而在BDE中的统一形式也给我们的编程带来了很大的方便,因为此时我的们没有必要考虑太多他是什么类型的库,仅这一点就给我们不知带了多少的爽事 J
本文重点来介绍在TTable下的表的建立与删除。
表的建立用CreatTable
下面来看一下示例程序:
//…………
if(!tblMyTable->Exists)//检查表是否存在,Exists就是用来看表是否存在的,存在则返加true
{
tblMyTable->Active=false;//修改表之间必须关闭表
tblMyTable->DatabaseName=”BCDEMOS”;//设置表的别名
tblMyTable->TableType=ttParadox;//设置表的类型,该表为Paradox数据库
tblMyTable->TableName=”mytable”;//设置表的名称
tblMyTable->FieldDefs->Clear();//清除已经存在的数据段定义
tblMyTable->FieldDefs->Add(“Field1”,ftInteger,0,true);//为表添加字段
…………//为表添加其它字段
tblMyTable->IndexDexfs->Clear();//清除索引定义
tblMyTable->IndexDexfs->Add(“”,”Field1”,TindexOptions()<<ixPrimary<<ixUnique);//添加索引定义
…………//添加其它索引定义
tblMyTable->CreateTable();//创建上面定义格式的表
}
//…………
下面来看一下两个Add的定义及用法:
添加字段Add
void _fastcall Add(const AnsiString Name,TFieldType DataType,int Size,bool Reauired);
Name用来指定字段名称;
DataType用来指定字段的类型,有ftUnknown、ftString、ftSmallint、ftInteger、ftWord、ftBoolean、ftFloat和ftCurrency等36种,注意字段类型必须用BCB定义的值;
Size指定字段尺寸;
Required用来指定字段是否允许非空。
添加索引的Add
void _fastcall Add(const AnsiString N,const AnsiString F,TindexOptions Options);
N用来指定创建的索引的名称;
F用来指定其需要使用的字段(多个字段之间用分号隔开);
Options用来指定对参数F列出的字段必须满足的要求。它是一个集合类型变量,可以取ixPrimary、ixUnique、ixDescending、ixExpression、ixCaseInsensitive和ixNonMaitained等几个值。
删除表用DeleteTable,它的声明如下:
void _fastcall DeleteTable(void);
下面来看一段示例:
void _fastcall TfrmMain::btnDeleteClick(Tobject *Sender)
{
if(tblMyTable->Active)//检查一下表是否打开
tblMyTable->Active=false;//先把表关闭了
tblMyTable->DatabaseName=DatabaseName;//指定库的别名
tblMyTable->TableName=”mytable’;//指定的表的名称
if(tblMyTable->Exists)//看一下表现在是否存在
tblMyTable->DeleteTable();//删除这个表
}
(未完)