我用以下方法,大家看是不是最好的:    用 Delphi 编制的数据库应用程序,由于在设计环境下可以直接连接数据库和激活 DataSet 组件,所以,如果不做适当的处理,发行版的程序还必须放置在与开发环境相同的路径下才能运行,程序如果放到别的分区(盘符不同)或别的文件夹下,就会提示找不到原数据库路径。    解决办法是:    在设计环境的开发调试阶段,可以按常规处理,但是在程序开发完成,准备发行的时候,把所有的数据库连接组件的 KeepConnection 属性设置为 False,同时把所有的 DataSet 的 Active 属性设置为 False,然后在组件所在窗体的 Activate 事件中编写代码:  sDBPath := extractFilepath(application.ExeName) + 'database.mdb';
  ADODataSet1.Active := false;
  ADODataSet2.Active := false;
  ADOConnection1.Connected := false;
  ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=' + sDBPath +';';
  ADOConnection1.Connected := true;
  ADODataSet1.Active := true;
  ADODataSet2.Active := true;  注:以 ADO 连接 Access 数据库为例,数据库连接组件为 ADOConnection1,有 2 个 ADODataSet,为 ADODataSet1 和 ADODataSet2。
  (摘自“十万个为什么”电脑学习网:http://why100000.com)

解决方案 »

  1.   

    一般来说,在设计环境下调好数据库连接之后,最好关闭数据库连接。
    像使用Access这种数据库,连接数据库使用相对路径
      

  2.   

    将Datamodule中的Adoconnection的connected设为False后编译即可!
      

  3.   

    以前经常忘记这点,发布的时候总遇到这种抱歉现在不得不每次发布之前都要把conntion关闭后再编译一次
      

  4.   

    KeepConnection 不用设置成false。只用配置adoconnection就可以了。用一个配置文件或者注册表,可以让用户自己配置。