+ -
当前位置:首页 → 问答吧 → Dll封装dbexpress mysql?

Dll封装dbexpress mysql?

时间:2011-11-02

来源:互联网

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

  如何我将这种方式封装在BPL中则不会出错?很是 奇怪?

作者: jiang188136923   发布时间: 2011-11-02

把错误代码贴出来看下呗

作者: funxu   发布时间: 2011-11-02

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;

作者: jiang188136923   发布时间: 2011-11-02

在DLL中 Use DBXMySql 就可以了。

作者: jiang188136923   发布时间: 2011-11-02

LZ是怎么调用的呢?存在多线程么?

作者: funxu   发布时间: 2011-11-02

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

作者: funxu   发布时间: 2011-11-02