如何动态设置数据库路径?(100分)

  • 主题发起人 主题发起人 manager
  • 开始时间 开始时间
M

manager

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高人:本人初涉贵坛,还请多多关照则个!
现有一事不明,不吝赐教:
如何在程序运行期能够动态设置数据库的路径?
比如象财务软件有时要实现多帐套自由转换。或者用户无意或者有意
改变了我们原来安装时的数据库路径,这时我们总不能提示:找不到
数据库或是干脆来个致命错误了事。那么就得自动去找寻或是让用户
手动指定。
关键是:指定的设置如何保存?
即只需指定一次,下次不用再指定(除非用户要求)则所有用到
数据库路径的地方都搞定?
 
var
sDir:string;//全局变量
.....
//启动时得到sDir
GetDir(0, sDir);
//应用时设置数据库的的路径
ChDir(sDir);
 
改变路径前,先把原先的close掉,然后把数据库连接的参数clear,然后再把
新的connected参数add进来,然后connected:=true,连接参数你可以双击database
然后出来的里面设置,然后点default,就可以看到连接参数了,这些参数可以在
程序中动态设置的。
 
1.提供一个数据库连接配置窗口
2.保存连接到文本文件
 
直接对database参数进行修改,如果database的数据库指向发生改变,则所有数据
集控件的数据源将重新定位。
 
一般用TTABLE或者TQUERY时候,动态改变数据库很容易,
如ExtractFileDir(Application.ExeName)就得到了应用程序的安装路径,由此也可以得到数据库
的路径,将路径赋给STRING1
,则
TABLE1.ACTIVE := FALSE;//加这条语句是为了防止提示说不能在一个打开的DATASET上进行此操作
TABLE1.DATABASENAME := STRING1;
TABLE1.ACTIVE := TRUE;
//change the directory of query
Query1.Close;
QUERY1.DATABASENAME := STRING1;
 
也可考虑在一个表内存放路经
 
不太明白你的意思,要保存设置就保存在文本里面好了,或者ini文件吧
 
哇,这么快啊!多谢了。
问题的关键是如何记住:即设置一次,下次启动时在没有变化(数据库丢失或者用户要求改变)
的情况下即沿用此设置。
动态设置DataBase的参数或是Ttable、TQuery的连接参数容易,但下次进来它能否记得上次所做的改变呢?
是否只能象hhcz的说法:存到文本文件里?
如此的话,所有有数据连接的地方都要加代码动态连接,是否还有什么别的方法?
因为我原来用过Access搞过小数据库,那里面只要刷新一个链接它便记住了,除非路径有变或者是你有意要变,否则你就不用去管它。

 
将STRING1设成全局变量,可以解决运行后的过程.
程序退出后,可以考虑将其存入到preference的文本文件中,程序启动时去读那个文本文件.
 
答案接受。
兄弟对这里的规矩不太懂,也不知道这分是干嘛 用的,分配积分倒成了令人头疼的问题。
最后是大家排排座,吃果果,见者有份。
只是根据答案的完整和可操作性稍有分别。
顺便问一句:
这分能当什么使呀?
 
后退
顶部