在Delphi中自动检测、建立数据库别名和表格
2008-04-09 04:17:21来源:互联网 阅读 ()
一、数据库别名(Alias)的定义和检测方法
当Type为STANDARD时,别名定义最
为简单,这时仅能采用PARADOX,DBASE,ASCIIDRV三种数据库作为缺省的驱动程序(DEFAULTDRIVER)。
另外,还要定义数据库存放路径(PATH) 和ENABLEBCD,才能建立一个完整的数据库别名。
Delphi的数据库应用程序能自 动提供一个Session组件,这个Session组件即为应用程序与BDE的接口。
1.检测别名
通过调用Session.GetAliasNames(list:Tstrings)
方法,可将当前BDE配置中的所有数据库别名的名称存放到List字符串列表中。list.IndexOf(需要检测的别名)的值会告诉我们这个别名是否
存在(其值为1时不存在)。
2.增加一个新的别名
Session组件的过程AddStandardAlias(constName,Path,DefaultDriver:string),可以增加一个标准类型的数据库别名。例如增加一个名为Cntssamp,缺省数据库驱动程序为PARADOX、存
放路径为c:\delphp11的别名:
Session.AddStandardAlias(Cntssamp,c:\delphp11,Paradox);
3.BDE配置文件存盘
Session.SaveConfigFile;
二、数据库中表格的定义和检测方法
数据库中表格的定义、
维护和使用,只有在数据库别名正确设置的情况下才有意义。以TTable组 件为例,必须设置其DatabaseName为一个实际存在的别名。
1.检测表格是否存在
通过调用Session.GetTableNames(constDatabaseName,Pattern:string;
Extensions,SystemTables:Boolean;
List:TStrings)方法,可将当前指定数据库? 中所有表格的名称存放 到List字符串列表中。list.IndexOf(需要检测的表格名)的值会告诉
我们这个表格是否存在(其值为1时不存在)。
2.建立一个表格
第一步,设置TTable组件的DataBase
Name(别名)、TableName(表格名)、TableType(数据库类型);
第二步,调用Table.FieldDefs.Add(constName:string;DataType:FieldType;Size:Word;Required:Boolean)增加表格的各个字段,其中Name为字段名,DataType为字段类型(常用的有ftInteger,ftString,ftDate,ftBoolean等),Size为字段长度,Required为该字段是否允许有空值。
第三步,调用Table.IndexDefs.Add(const
Name,Fields:string;Options:TIndexOptions)方法增加表格的索引文件,其中Name为索引文件名,Fields为索引字段,options为索引参数
的集合,常用的索引参数有ixPrimary(主键)、ixDescending(降序)、ixUnique(
具有唯一值)等。
第四步,调用Table.CreateTable 建立表格。
三、一个实例
在Form1.Formcreate事
件中写入如下代码,程序启动时,将自动检测是否存在数据库别名Cntssamp,如果没有则建立之;自动检测别名Cntssamp中是否存在表格TSK(图书库),
如果没有则自动建立表格TSK。
procedureTForm1.FormCreate(Sender: TObject);
var
ap:TStringList;{字符串列表变量}
answer:Integer;
begin
ap:=TStringlist.Create;
Session.GetAliasNames(ap);{取得别名列表}
if(ap.IndexOf(Cntssamp)=1)then{判断别名是否存在}
begin
answer:=Application.MessageBox(别名Cntssamp不存在,现在创建吗?,BDE信息窗口,mb_OKCancel);
{增加一个名为Cngzsamp的数据库别名}
ifanswer=IDCANCELthen
begin
ap.Free;
Exit;
end;
Session.AddStandardAlias(Cntssamp,c:\delphp11,Paradox);
Session.SaveConfigFile; {BDE配置文件存盘}
end;
ap.Clear;{取得别名Cngzsamp中的所有表格名称列表}
Session.GetTableNames(Cntssamp,,False,False,ap);
if(ap.IndexOf(TSK)=1)then {判断表格是否存在}
begin
answer:=Application.MessageBox( 别名Cntssamp中不存在表格TSK,现在创建吗?,表格信息窗口,mb_OKCancel);
ifanswer=IDCANCELthen
begin
ap.Free;
Exit;
end;
withtable1do
begin
Active:=false;
DatabaseName:=Cntssamp; {数据库别名}
TableName:=TSK; {表格名}
TableType:=ttParadox; {数据库类型}
withFieldDefs do
begin {增加字段}
Clear;
Add(SH,ftString,30,False);{书号String(30)}
Add(SM,ftString,30,False);{书名String(30)}
Add(CBS,ftString,20,False);{出版社String(20)}
Add(CBRQ,ftDate,0,False);{出版日期Date}
Add(YS,ftInteger,0,False);{页数Integer}
end;
withIndexDefs do
begin {增加索引}
Clear; {按书号字段建立主索引}
Add(SHSY,SH,[ixPrimary,ixUnique]);
end;
CreateTable; {创建表格}
end;
end;
ap.free; {释放变量ap}
end;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:建立应用软件注册安全机制
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash