幽雅BDE(一)

类别:编程语言 点击:0 评论:0 推荐:

 

幽雅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();//删除这个表

}

 

(未完)

 

本文地址:http://com.8s8s.com/it/it29201.htm