我希望把我的数据库程序和一个数据库文件一起分发,
且要保证最终用户无须任何的设置,
安装成功就能投入使用?
请各位指导其中的关键有哪几步?

解决方案 »

  1.   

    注意如果是win98,将Midas.dll 一起发布
      

  2.   

    我又没有使用Tclientdataset,为什么要使带 Midas.dll
    我想知道的是如何安装后就使你的ADO的连接串指向用户指定的安装目录
      

  3.   

    程序中实现动态的连接字符串,可以用 Application.ExeName 得到当前的应用程序名称,用 ExtractFileDir 分离出数据库的目录,然后在连接。也就是数据库相对于应用程序的路径不能改变。
      

  4.   

    双击ADOConnection打开配置窗口,把数据连接字符串中的路径删除,使用绝对路径即可。
    例如:
    如果你的数据库在程序主目录,则'c:\delphi\project\MyData.MDB'改为'MyData';
    如果在程序主目录下的子目录,则'c:\delphi\project\DB\MyData.MDB'改为'.\DB\MyData';
    编译后就可以发布了。
      

  5.   

    98的话最好装mdac的新版本,有时会有些莫名的问题。
      

  6.   

    如果你的数据库在执行文件一个目录下就可以先取得程序所在目录,然后再取得你的数据库所在目录即可。很简单的!
    建议数据库路径放在INI文件中,这样在安装时可由安装程序帮你设定好!
      

  7.   

    在网上我找到很多关于分发BDE的文章,  都说要把和BDE相关的DLL文件的路径信息写注册表的一个位置    可是我在我的机器上根本找不到这个位置和相应的键值
    这是为什么    我的BDE 可是用的好好的, 
      
     还有一个问题就是这些注册的路径信息是供谁使用的呢是由哪个控件读取的吗
     请指教  谢谢
      

  8.   

    Ado,可以使用opendialog定位啊?或者当前路径的方法。
    下面试使用当前路径,my database pasee word is 1234,str1,str3,curpath,connstr是变量:
      Str1:='Provider=Microsoft.Jet.OLEDB.4.0;user ID=Admin;';
      Str3:='Persist Security Info=False';
      CurPath:=ExtractFilePath(Application.ExeName);
    if adoconnection1.Connected= false then
    begin
         ADOConnection1.Close;
        
        connstr:=str1+'Data Source='+CurPath+'DBase.mdb'+';'+'Jet OLEDB:Database Password="1234"'+';'+str3;
        adoconnection1.ConnectionString := Connstr;
        adoconnection1.Open;用opendialog:
      Str1:='Provider=Microsoft.Jet.OLEDB.4.0;user ID=Admin;';
      Str3:='Persist Security Info=False';
    if Opendialog1.Execute    then
     connstr:=str1+str2+'Data Source='+Opendialog1.FileName+';'
              +'Jet OLEDB:Database Password="1234"'+';'+str3
    ;
    adoconnection1.ConnectionString := Connstr;
        adoconnection1.Open;
    /////////////////////////////////////////
    方法可能有点拙笨,但屡试不爽!!
      

  9.   

    同意ityu(ityu),我也是用这种办法的,但在程序(每次开机或重启后)第一次启动时有些慢,第一次查询也有些慢,据说也可以通过读写注册表来设置一个固定的dsn数据源,好象在 葵花宝典里有,我找找,这种方法应该快点.
      

  10.   

    没那么麻烦吧,
    1、在你的工程目录下搞一个database目录,然后把数据文件放进去(比如:db1.mdb).2、adoconnection的connectionstring写成
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database\db1.mdb;Persist Security Info=False3、如果connected设为TRUE,一切ok的话,那就可以了4、发布:发布你的程序和你的数据库,保持目录结构不变。即:在你的程序的目录下包括database目录,db1.mdb in it.
      

  11.   

    to minercxy(Codewhy):
    个人认为确实你的方法很简单(我也是用这种方法的),但
    初始化时速度我认为真的很慢,因为每当程序启动时它都要
    去建立一个新的dsn,如果是固定dsn则可使这一过程变得更有效率
      

  12.   

    TO  minercxy(Codewhy
    同意你的看法, 对于ADO +ACCESS 的小项目,你这种方法足以应付!
     
    还有一种方法就是用 连接串.属性.项目.[name].value来实现,我现在就用这种方法,而且我的ADO+SQLSERVER也是如此.各们可以试试!