论坛登陆 用户: 密码:
联系我们
设为首页
加入收藏
业界新闻 网络编程 程序开发 网页图象 聊天通讯 软件应用 网络安全 硬件学堂 教育频道 站长club
  ·推荐新闻
 
·美前任官员认为amd告倒英特
·搜索引擎关键字排行简介
·网站优化教程(一)
·msn近期遭受木马病毒骚扰 用
·用qq管理你的系统^_^ 
·测评中心金山毒霸联合发布7
·qq群聊实名 普通用户不受影
·雅虎思科联手推数字邮件签名
·这18条背下来没人敢和你忽悠
·自己动手,拯救丢失的硬盘数
  ·资料搜索
 
  ·相关文章
·制作用于日期时间型字段的delp
·数据库应用程序开发中图像数据
·delphi 中使用计算出的字段
·dbgrid中的下拉列表和查找字段
·在delphi中建立和使用别名
·用delphi实现将纯文本资料转入
·tdbgrid控件中对多个记录的处理
·在delphi动态生成定义数据库
·用delphi编程访问sqlserver数据
·在dbgrid中实现copy、paste功能
  ·热门新闻
首页>>程序开发>>delphi >>文章正文

delphi中数据文件路径的管理


 日期:2005-7-18 9:00:13     来源:易特网络技术   编辑:黑鹰  点击:
elphi中的table控件(component)和query控件都有一个databasename属性。可以用databasename属性来指定该控件所引用的数据表的路径。有两种方法可以为属性databasename设置路径:第一种方法是直接输入数据表所在路径,另一种方法是使用数据库别名(alias)。在delphi中,数据库别名是在数据库引擎(bde)中建立的,一个别名对应一个文件路径。可以这样为别名下定义:别名是对文件路径的映射,是文件路径的简称。因此,在属性databasename中使用数据库别名和使用文件路径实质都是一样的,它们都作为查找数据表的根(root)路径。但是,在数据库应用程序的设计中,如果涉及到的table控件和query控件比较多的话,那么使用别名来引用文件路径就十分高效、方便,并且不容易出差错。原因是显而易见的:一方面,别名可以在列表中直接选取而不必像文件路径那样从键盘上输入;另一方面,别名可以设置得很简短,即使从键盘录入也比较快捷。因此,笔者建议要多使用数据库别名而少使用文件路径。

  另外,在table控件的属性tablename和query控件的sql语句中,都可以包含数据表的路径信息。因为query控件和table控件的情况十分相似,所以下面只对table控件进行说明。这种路径信息既可以是一个完整的路径,也可以是一个完整路径的后面部分。比如对table控件的属性tablename赋值时,可以把c:\delphi\demos\data\customerdb赋给它,也可以把data\customerdb赋给它。

  在实际应用中,我们可以把table控件的属性databasename和属性tablename结合起来使用。把属性databasename中的路径作为根路径,把属性tablename中的不完整路径(如果有的话)作为子路径。把这两个路径结合起来就是访问到数据表的一个完整的路径。比如,假设在路径c:\delphi\demos\data下存在数据表customerdb,把table控件的属性databasename指定为c:\delphi\demos\data,然后把属性tablename指定为customerdb,就可以访问数据表customerdb了。如果属性databasename指定为c:\delphi\demos,要想访问数据表customerdb,只要把属性tablename指定为data\customerdb就行了。有时候这二者并不同时起作用。例如,如果属性tablename中包括了完整的路径,那么属性databasename中的路径就不起任何作用了。又如,如果属性databasename中没有指定任何路径,而属性tablename中的路径又是不完整的,如data\customerdb,那么应用程序运行时的当前路径就作为根路径。为了便于程序移植, 哂辛降憬ㄒ椋?br>   1、通常,只需要在属性databasename中指定数据表的路径,而在属性tablename中不必包括路径信息。
  2、一般情况下,不要在属性tablename中指定完整的路径。

  下面就来介绍一下如何提高数据库应用程序的移植性。
  数据库应用程序的移植是一个重要的问题。因为在数据库应用程序中要访问数据库或数据表,就要涉及到数据文件的路径。一般来说,数据库应用程序开发完成后要移植到其它机器上使用,因此数据库应用程序运行时的数据文件的路径很可能和开发时的不同。所以必须对数据文件的路径进行有效的管理,以便于系统的移植。下面介绍三种管理数据文件路径的方法。
  1、把数据文件建立在应用程序所在目录的子目录下。具体过程为:
  (1)为了设计起来方便,在设计时可以使用数据库别名,且该数据库别名指向应用程序所在路径。把子路径名加上数据表名字之后赋给table控件的属性tablename。
  (2)在发行应用程序前,把所有的table控件或query控件的属性active都置为false,删除属性databasename中的所有字符(即置空)。
  在缺省情况下,应用程序运行时的当前目录是应用程序所在的目录。如果在应用程序中没有调用chdir等过程改变当前目录的话,那么就不必执行第三步,否则进行第三步的处理。
  (3)在使用到table控件和/或query控件的窗体的创建(oncreate)事件中,把应用程序所在路径赋给该窗体中的每一个table控件和query控件。具体的形式如下所示:
  table对象(或query对象)?databasename:=extractfilepath(application?exename);

  2、利用配置文件存放数据库路径
  此方法是在应用系统安装或第一次运行时把数据库路径信息写入配置文件,以后运行时把路径信息从配置文件中读出。配置文件的读写利用类tinifile(delphi1.0和delphi3.0)、类treginifile(delphi 3.0/4.0)和类tregistry(delphi3.0/4.0)所提供的方法来实现。各个方法具体的用法请查阅delphi联机帮助。本方法的基本思路为:
  (1)为了设计方便,在设计时可以使用数据库别名。
  (2)同1的步骤(2),但必须进行第三步的处理。
 。?)同1的步骤(3)类似。即,在窗体的创建事件中把数据库路径赋给该窗体中的每一个table控件和query控件,用形式化语言描述如下:
  table对象(或query对象)?databasename:=配置文件记录中的数据库路径。

  3、利用数据库别名存放数据库路径
  在设计时使用数据库别名。在应用系统安装或第一次运行时利用系统对象session在bde中建立与设计时相同的别名,使别名指向相应的数据库路径。下面的代码说明了如何建立名字为“fdb”的别名,它的数据库路径为d:\test,数据库类型为paradox。
  session.configmode:=cmall;
  session.addstandardalias(′fdb′,′d:\test′,′paradox′);
  session.saveconfigfile; {保存新建立的别名}

  注:在delphi1.0中session对象不具有第三种方法中所用到的属性和方法。以上三行代码在delphi3.0/4.0下调试通过。

  从上面的讨论可以看出,方法三实现起来最简单,其次是方法一,最后是方法二。笔者认为,如果应用系统是用delphi3.0/4.0开发的,那么应尽量使用方法三。
上一篇:delphi筛选数据
下一篇:用delphi 3.0制作应用软件经验谈
[发送给好友] [打印本页] [关闭窗口] [返回顶部转载请注明来源:http://www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 黑鹰 投稿作者: 易特网络
信息来源: 易特网络技术 录入时间: 2005-7-18 9:00:13
浏览次数: 投稿信箱: shtghy@163.com
设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
copyrights ©2004-2005 iyit.net all rights reserved. 网站合作、广告联系qq:147007642、466949678
易特网络技术 点击这里给我发消息