转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Delphi中建表         ★★★★

Delphi中建表

作者:闵涛 文章来源:闵涛的学习笔记 点击数:885 更新时间:2009/4/23 18:24:11
一、数据库别名(Alias)的地位
  Delphi内建的数据库引擎BDE(Borland Database Engine),提供了强大的数库处理功能,BDE是Delphi数据库功能的核心部分。

  以只有单机使用的本地数据库为例,Delphi程序可以直接通过BDE来控制数据库数据的存取。这种存取控制是以配置好BDE参数为前提的,具体的来说是正确设置了数据库的别名(Alias),Delphi的最常用的数据库访问组件TTable,其属性DataBaseName即为已经定义的数据库别名,在没有定义数据库别名的情况下,是不能访问具体的数据库表格的。因此,在建立数据库表格时,必须有两个过程:一是通过BDE检测相应的数据库别名是否存在,如果不存在,则应首先建立相应的数据库别名;二是检测该数据库别名(即DataBaseName)中是否存在需要建立的数据库表格,如果不存在,才建立之。这样,才能保护原有表格的数据不丢失。


二、Session组件: Delphi数据库程序与BDE的接口
  Delphi自动为数据库应用程序提供了一个Session组件,这个Session组件是应用程序与BDE接口的关键。下面是Session组件关于BDE接口的几个过程的原型说明。
  1.GetAliasNames(list:Tstrings);将当前BDE配置中的所有数据库别名的名称存放到List字符串列表中。

  2.AddStandardAlias(const Name, Path, DefaultDriver: string);增加一个标准类型的数据库别名。例如增加一个名为Cntssamp,缺省数据库驱动程序为PARADOX、存放路径为c:\delphp11的别名:
  Session.AddStandardAlias(Cntssamp,c:\delphp11,Paradox);

  3.GetTableNames(const DatabaseName, Pattern: string; Extensions,SystemTables: Boolean; List: TStrings);可将指定数据库别名中所有表格的名称存放到List字符串列表中。

  4.SaveConfigFile; 将BDE配置存盘。
  另外,用List.IndexOf(指定串)的值判断字符串列表中是否有需要的字符串,来决定是否应建立新的数据库别名和数据库表格。

三、一个实例
  在Form1.FormCreate事件中写入如下代码,程序启动时,将自动检测是否存在数据库别名Cntssamp,如果没有则建立之;自动检测别名Cntssamp中是否存在表格TSK(图书库),如果没有则自动建立表格TSK。
  procedure TForm1.FormCreate(Sender: TObjec
  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的数据库别名}
   if answer=IDCANCEL then
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);
   if answer=IDCANCEL then
begin
   ap.Free;
   Exit;
   end;

   with table1 do
begin
   Active:=false;
   DatabaseName:=Cntssamp; {数据库别名}
   TableName:=TSK;   {表格名}
   TableType:=ttParadox; {数据库类型}
    with FieldDefs 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;

   with IndexDefs do
begin {增加索引}
   Clear; {按书号字段建立主索引}
   Add(SHSY,SH,[Primary,ixUnique]);
   end;

   CreateTable; {创建表格}
   end;
   end ;

   ap.free; {释放变量ap}
  end;


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台