用ado连接数据库时,如果走odbc,客户使用时,还要配odbc,比较麻烦
而直接用数据库类型连接时,如我用jet4.0连接access数据库时,客户
使用时不用配odbc了,但又有另一个问题,就是用adoconnect连接时要指定
数据库位置,如c:\....\data1.mdb,这样客户使用时,库就要指定放在
某地方,不能随意考到哪都能用起来,所以我想能否又不用配odbc,又可
随意改变数据库存放位置都可用,我不知道怎么解决这个问题,请大侠们
指教!!!!

解决方案 »

  1.   

    jet4.0也可以改变数据存放位置阿,你修改连接字符串不就行了吗
      

  2.   

    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtratFilePath(Application.ExeName)//路径
    +'Data.mdb;Persist Security Info=False';
      

  3.   

    如果我把程序拿给用户用,他随便把程序和库考来考去,我也不能跟着他把程序中的连接字符串改来改去啊,我的意思就是程序自动搜索库的位置并连接,而且不走odbc,如何解决啊,谢谢各位大侠赐教!!!!!
      

  4.   

    自动搜索我不知道,但是可以把连接串方在ini文件,或者是注册表里。另外的解决方法就是在程序运行时,先要求用户自己找到数据库的路径。因为我觉得如果去搜索数据库的路径的话可能太耗时了。也可以把ini文件和用户输入相结合。就是用户输入后记录在ini文件中,下次运行时先从ini中读,如果找不到再让用户输入。
      

  5.   

    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtratFilePath(Application.ExeName)//路径,取应用程序路径
    +'Data.mdb;Persist Security Info=False';
    照我的方法,把库文件放在和应用程序相对位置固定的地方如在同一文件夹下或在应用程序当前文件夹下的Data文件夹下等,用上述语句就可以了
      

  6.   

    其实可以将Delphi的数据配置窗口调出让用户自己配置,在该AdoConEd单元中你会看到。
    var
      i_adoc_connect: TADOConnection;
      strConnectionString  :string;
    begin
      if tConnectionString(i_adoc_connect) then
        l_strConnectionString := i_adoc_connect.ConnectionString;
    end;
    将得到的连接字符串写入注册表,程序启动从注册表中读出赋予数据库连接部件即可。
      

  7.   

    自动搜索有点扯吧,先不考虑费不费事,如果有多不db,搜到哪个算哪个?同意idilent(说错了别怪我)的方法,进入系统之前加个打开文件对话框之类的。
      

  8.   

    li_zhifu(东北人) 的方法我试了,编译报错undentify  'ExtratFilePath'
    可能我没写对,您能否给我写个例子,如果我生成的exe叫test.exe,和数据库都放在同一个文件夹下,文件夹也叫test,数据库名为db1.mdb,那用您的方法连接字符串怎么写啊????
    还有用ExtratFilePath函数还要在前面加use ....吧?
      

  9.   

    同意flyingkiller(大飞虫)的观点,简单易用!.\DATA.MDB
      

  10.   

    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+SelectDirectory(ExtratFilePath(Application.ExeName), [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP)//路径,取应用程序路径
    +'Data.mdb;Persist Security Info=False';呵呵,每次执行让用记自已找目录,或直接找数据库:)
      

  11.   

    uses AdoConEd;
    EditConnectionString(ADOConnection1);