本人刚学delphi,对于数据库的连接路径问题不懂,哪位高手能告诉我。
客户在安装软件时不一定放在哪个地方所以数据库的路径是可变的,数据库的路径不一定是哪个盘下有可能是C或D等,请问在编程时,应怎样解决这个问题

解决方案 »

  1.   

    smm:='AAAA';//密码
      try
        G_StrExePath:=ExtractFilePath(Application.ExeName);//程序运行路径
        sdbpath:=G_StrExePath+'data\dbexer.mdb';//数据库名称
        sconstr:='Provider=Microsoft.Jet.OLEDB.4.0;'+
               'User ID=Admin;Data Source='+sdbpath+';'+
               'Mode=Share Deny None;Extended Properties="";'+
               'Locale Identifier=2052;Persist Security Info=False;'+
               'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'+
               'Jet OLEDB:Database Password='+smm+';'+
               'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;'+
               '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';
        if DM1.ADOCn1.Connected = True then DM1.ADOCn1.Connected:=False;
        DM1.ADOCn1.ConnectionString:=sconstr;
        DM1.ADOCn1.Connected:=True;
      

  2.   

    其实你可以将数据库放在本程序的目录下面:例如程序在e:\soft\下,而数据库在e:\soft\database\DB.MDB
    指定Exe_path:='E:\SOFT\'
    数据库路径DB_path:=Exe_path+'database\DB_NAME.MDB'你可以用ExtractFilePath(ParamStr(0))得到程序所在的路径,然后再写ADO的connectionstring。procedure Tf_login.Button1Click(Sender: TObject);
    begin
      ADOConnection1.ConnectionString:=
        ' Provider=Microsoft.Jet.OLEDB.4.0; '
       +' Data Source= '
       +  ExtractFilePath(ParamStr(0))+'database\DB_NAME.MDB; '
       +' Persist Security Info=False; ';
      ADOConnection1.Connected:=true;end;
      

  3.   

    记得将ADOconnection的LoginPrompt设置成False;