我用 TSqlConnection连接mysql 当将连接方法封装在 DLL中时,在DLL中动态设置 所有参数,当然参数都是正确的,最后        
        try
          FConnection.Connected:=true;
        except
          Raise Exception.Create('Conn error');
        end;
便会出错?何解?      如何我将这种方式封装在BPL中则不会出错?很是 奇怪?

解决方案 »

  1.   

    DLL中创建  TSQLConnection对象的代码。
    constructor TDBConnection.Create;
    begin
      FConnection := TSQLConnection.Create(nil);
      FConnection.Params.Clear;
      FConnection.ConnectionName := 'MYSQLCONNECTION';
      FConnection.Params.Add('HostName=127.0.0.1');
      FConnection.Params.Add('Database=tennis');
      FConnection.Params.Add('User_Name=root');
      FConnection.Params.Add('Password=root');
      FConnection.Params.Add('ServerCharSet=utf8');
      FConnection.Params.Add('DriverUnit=DBXMySQL');
      FConnection.Params.Add('DriverPackageLoader=TDBXDynalinkDriverLoader,DbxCommonDriver150.bpl');
      FConnection.Params.Add('DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=15.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
      FConnection.Params.Add('MetaDataPackageLoader=TDBXMySqlMetaDataCommandFactory,DbxMySQLDriver150.bpl');
      FConnection.Params.Add('MetaDataAssemblyLoader=Borland.Data.TDBXMySqlMetaDataCommandFactory,Borland.Data.DbxMySQLDriver,Version=15.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
      FConnection.Params.Add('GetDriverFunc=getSQLDriverMYSQL');
      FConnection.Params.Add('LibraryName=dbxmys.dll');
      FConnection.Params.Add('VendorLib=LIBMYSQL.dll');
      FConnection.Params.Add('MaxBlobSize=-1');
      FConnection.Params.Add('LocaleCode=0000');
      FConnection.Params.Add('Compressed=False');
      FConnection.Params.Add('Encrypted=False');
      FConnection.Params.Add('BlobSize=-1');
      FConnection.Params.Add('ErrorResourceFile= ');  FConnection.LoginPrompt := False;
      FConnection.DriverName := 'MySql';
      FConnection.KeepConnection := True;
      try
      FConnection.Connected:=true;                    //---------------到这里就出错了。没有错误代码。
      except
        Raise Exception.Create('Conn error');
      end;
    end;
      

  2.   

    在DLL中 Use DBXMySql 就可以了。
      

  3.   

    不好意思,水平有限,上面的代码还真没看粗来为啥报错
    不过dll是可以调试的
    1、将调用该DLL的exe复制到DLL的同级目录 
    2、run->Parameters-Host Application   选择刚复制过来的程序 
    3、加上断点 
    4、run 
    在调试状态加个断点看看错误消息是什么对分析错误应该有帮助的