用dbexpress控件中的sqlconnection连接interbase数据库的动态连接参数设置
目前遇着很奇怪的问题,设置如下
  inif.Create(getcurrentdir+'\config.ini');
  sqlconnection1.Connected:=false;
  sqlconnection1.Params.Clear;  try
  sqlconnection1.Params.Append('drivername='+inif.ReadString('zblsjxc','drivername',''));
  sqlconnection1.Params.append('driverunit='+inif.readstring('zblsjxc','driverunit',''));
  sqlconnection1.Params.append('DriverPackageLoader='+inif.readstring('zblsjxc','DriverPackageLoader',''));
  sqlconnection1.Params.append('DriverAssemblyLoader='+inif.readstring('zblsjxc','DriverAssemblyLoader',''));
  sqlconnection1.Params.append('MetaDataPackageLoader='+inif.readstring('zblsjxc','MetaDataPackageLoader',''));
  sqlconnection1.Params.append('MetaDataAssemblyLoader='+inif.readstring('zblsjxc','MetaDataAssemblyLoader',''));
  sqlconnection1.Params.append('BlobSize='+inif.readstring('zblsjxc','BlobSize',''));
  sqlconnection1.Params.append('CommitRetain='+inif.readstring('zblsjxc','CommitRetain',''));
  sqlconnection1.Params.append('Database='+inif.ReadString('database','databaseservername','')+':'+inif.ReadString('database','databasename',''));
  sqlconnection1.Params.append('ErrorResourceFile='+inif.ReadString('zblsjxc','ErrorResourceFile',''));
  sqlconnection1.Params.append('LocaleCode='+inif.ReadString('zblsjxc','LocaleCode',''));
  sqlconnection1.Params.append('Password='+inif.ReadString('zblsjxc','Password',''));
  sqlconnection1.Params.append('RoleName='+inif.ReadString('zblsjxc','RoleName',''));
  sqlconnection1.Params.append('ServerCharSet='+inif.ReadString('zblsjxc','ServerCharSet',''));
  sqlconnection1.Params.append('SQLDialect='+inif.ReadString('zblsjxc','SQLDialect',''));
  sqlconnection1.Params.append('Interbase TransIsolation='+inif.ReadString('zblsjxc','Interbase TransIsolation',''));
  sqlconnection1.Params.append('User_Name='+inif.ReadString('zblsjxc','User_Name',''));
  sqlconnection1.Params.append('WaitOnLocks='+inif.ReadString('zblsjxc','WaitOnLocks',''));
  sqlconnection1.Params.append('Trim Char='+inif.ReadString('zblsjxc','Trim Char',''));
  finally
  inif.Free;
  end;
编译后运行,在进入界面时会报错,但进入界面后,能够查询到数据库里的资料.WHY!!!!

解决方案 »

  1.   

    干嘛要那么麻烦
    SQLConnection.Connected:=False;
    SQLConnection.ConnectionName:='SQLServer';
    SQLConnection.DriverName:='SQLServer';
    SQLConnection.Params.Values['Database']:=dbname;
    SQLConnection.Params.Values['HostName']:=computer;
    SQLConnection.Params.Values['User_Name']:='sa';
    SQLConnection.Params.Values['Password']:='';
    SQLConnection.Connected:=True;
      

  2.   

    function CreateCon(HostName,DataBase,UserName,PassWord:String):TSQLConnection;
    var
        Con:TSQLConnection;
    begin
        Con := TSQLConnection.Create(nil);
        Con.Params.Clear;
        Con.Params.Add('DriverName=MySql');
        Con.Params.Add('HostName='+HostName);
        Con.Params.Add('DataBase='+DataBase);
        Con.Params.Add('User_Name='+UserName);
        Con.Params.Add('Password='+PassWord);
        
        Con.ConnectionName := 'MySQLConnection';
        Con.DriverName := 'MySQL';
        Con.GetDriverFunc := 'getSQLDriverMYSQL';
        Con.LibraryName := 'dbxmys30.dll';
        Con.VendorLib := 'libmysql.dll';
        Con.LoginPrompt := false;
        
    Result := Con;
    end;
      

  3.   

    报错的原因找到了是因为没有指定CONNECTIONNAME的原因.
    然后我想问一下在参数里有Con.Params.Add('DriverName=MySql');这句话,那么如果我程序在发布的时,是不是需要把dbxdrivers.ini这个文件也跟着打包呢.