学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> Delphi >> 在Delphi中自动检测、建立数据库别名和表格


在Delphi中自动检测、建立数据库别名和表格


Delphi3内建的Borland数据库 引擎(BDE),使Delphi3程序能通过数据库别名(DatabaseAlias)十分方便地访问各种类型的数据库。然而,数据库别名的建立、修改、删除等维护工作,需要在BDEAdministrator 中进行,数据库中实际表格结构的建立和维护,有时也要在DataBaseDesktop中完成,这给用户增加了不少困难。有没有办法让用户不去执行BDEAdministrator 和DataBaseDesktop这两个应用程序,就可直接检测、建立数据库别名和库中的表格呢?笔者通过探索,得到了一种可行的方案,现以笔者所开发 的一个单机版的图书资料管理系统为例,简要加以说明。

一、数据库别名(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;

技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"在Delphi中自动检测、建立数据库别名和表格"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 在Delphi中自动检测、建立数据库别名和表格 相关内容
Google搜索中 在Delphi中自动检测、建立数据库别名和表格 相关内容
雅虎中 在Delphi中自动检测、建立数据库别名和表格 相关内容
Sogou搜索中 在Delphi中自动检测、建立数据库别名和表格 相关内容

相关软件 最新回复帖子:

·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效


  相关软件 在Delphi中自动检测、建立数据库别名和表格相关文章
在Delphi程序中维护DBF数据库 用Delphi 开发数据库程序经验三则
在Delphi的DBGrid中插入其他可视组件 Delphi3数据库编程中的查找字段
Delphi数据库开发及统计表格设计 用Delphi4的QReport部件生成报表
也谈为Delphi中数据库报表加网格 在Dephi中使用TStream读写数据的技巧
Delphi中的消息处理 在DEPHI程序中使用ADO对象存取ODBC数续
在DELPHI程序中使用ADO对象存取ODBC数 在DELPHI程序中动态设置ODBC数据源
精简DELPHI数据库系统的补充 如何对数据流 INSERT、APPEND
定制任务栏上的系统菜单 活用 SetSelTextBuf
捕捉来自 Thread 的异常 在DEPHI 4.0中实现动画功能
修改与克隆对象属性 控制系统菜单