数据库路径问题(66分)

  • 主题发起人 主题发起人 wapftgdss
  • 开始时间 开始时间
W

wapftgdss

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库路径问题

小弟写了一个程序,数据库用的是Access,用TADOConnection连接数据库,用TADOTable获取数据。
在本机上运行程序没有任何问题,但是放在其他电脑上运行就会提示找不到数据库文件。
以下是TADOConnection对象的ConnectionString属性:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=F:/学习/源程序/电话簿/db1.mdb;Mode=Share Deny None;Extended Properties="";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

如果我将其设置为还是出现同样的错误
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=./Db1.mdb;Persist Security Info=False';
ADOConnection1.Connected:=true;

请问该如何在程序中设置数据库的相对路径?
 
'....Data Source='+ExtractFilePath(Application .ExeName)+'db1.mdb'
 
Source=./Db1.mdb
改为Source=Db1.mdb
但必须保证数据库文件和EXE文件在同一个文件夹内才能这样使用
 
不过我一般是把路径配置保存在ini中,用的时候读取,用的时候组下字符串就可以了.
linnstr:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=%s';
s1:=inifile.read(..);
ADOConnection1.ConnectionString:=format(linkstr,[s1]);
 
谢谢两位的回答了。
to 一条大鱼,如果要都放在同一文件夹下,那么局限性太大了,而且也不便于管理。
to starpc,是自己新键一个ini文件吗?用ini文件的好处又在哪里呢?
 
放在根目录,,就是现在流行的配置驱动.不过现在更倾向于XML,,不过INI也很方便了.
INI保存了你链接数据库的字符串,目录信息.
 
恩xml ,和ini都方便,如果是同目录的话用extractfilepath(application.exename)+数据库名也好
如果用xml, ini的话,程序的许多配置都可以放里面
 
就是设置ADOCONNECTION的连接字符串时路径名设为相对的就行了。
 
>>>>to starpc,是自己新键一个ini文件吗?用ini文件的好处又在哪里呢?

可以在初次连接时由程序写入程序同级目录,不用新建.程序也可以自动创建的.
ini读写方便,是文本文件.可以手工可视修改.要程序配置中用得最多.
 
连接ACESS,datasource路径也要从新设置
 
动态链接,那样如何写路径就根据你的执行文件走相对路径 了
 
谢谢,太谢谢各位了.以后请多指教!
 
'Data Source='+ExtractFilePath(Application .ExeName)+'ini/db1.mdb'
 
后退
顶部