如何让应用程序跟着数据库到处跑?(100分)

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

MIB

Unregistered / Unconfirmed
GUEST, unregistred user!
不管数据库被放在哪个目录,可执行文件都能正确调用数据库,如何才能做到?
 
数据库的目录应是固定的,应用程序可以在任意位置。除非你用一些简单表+专用
控件。
 
我想如果你能知道数据库的path,可以用tsession动态建立一个别名。
This example creates an alias for an InterBase database server:
var

MyList: TStringList;
begin
MyList := TStringList.Create;
try
with MyList do
begin
Add('SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB');
Add('USER NAME=MYNAME');
end;
Session1.AddAlias('NewIBAlias', 'INTRBASE', MyList);
finally
MyList.Free;
end;
end;
或者你可以用tdatabase,设定database.params:=
PATH=c:/yourdbdir
DEFAULT DRIVER=PARADOX
ENABLE BCD=FALSE

database.databasename:='youralias'
hubdog一本正经地说:做坏事不难,难的是一辈子都做坏事!
 
如果你用的是Paradox的数据库,可以不指定别名,而在table的 databasename
中指定库文件所在的路径即可。
比如:
table1.databasename:=extractfilepath(application.exefilename);
 
我的做法:(限于不通过BDE)
在程序启动的时候,检查注册表或者INI文件,看数据库的路径是否存在。
如果不存在,设置bSelectDatabase(一个变量)为true,同时任何除了
选择数据库外的Menu、botton的Visible为false,(可以放到Idle中)。
在选择数据库的时候连结一下,不出错则bSelectDatabase = false。程
序结束时保存数据库位置。
 
你伯的是几层,如果是两层或多层,走BDE或ODBC是不存在这个问题的。只要数据
库名相同就可。
对于基于文件的本地数据库,只要在程序启动时自动检查一下看数据库是否在指定
目录,不在可打开一个对话框,让使用者指定数据库的位置,并存在一个INI文件
中就可。
 
路径根本不是问题,放在当前目录下就可以了,关键是不能用数据库驱动程序,
因为你不能保证每台机器上都有驱动. 所以只能用直接存取dbase,parodax的
控件.
 
你可以
1.用BDE定义别名;
2.在应用程序中提供让用户输入数据库路径,保存在.ini或注册表中;
3.使用TApplication类的ExecFile属性,使数据库和你的应用程序在同一目录
下;

这样你就可以确定数据库的位置了
 
应该是文件型数据库。
你的数据库的名字看来是唯一的,
1)在所有硬盘下查找数据库的名字
2)设置table.databasename

有这种应用吗?
 
同意HYDRAXIN的意见
 
设置目录时,设为 "./databasename".
 
多人接受答案了。
 
后退
顶部