Dll封装dbexpress mysql?
时间:2011-11-02
来源:互联网
我用 TSqlConnection连接mysql 当将连接方法封装在 DLL中时,在DLL中动态设置 所有参数,当然参数都是正确的,最后
try
FConnection.Connected:=true;
except
Raise Exception.Create('Conn error');
end;
便会出错?何解?
如何我将这种方式封装在BPL中则不会出错?很是 奇怪?
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;
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
在调试状态加个断点看看错误消息是什么对分析错误应该有帮助的
不过dll是可以调试的
1、将调用该DLL的exe复制到DLL的同级目录
2、run->Parameters-Host Application 选择刚复制过来的程序
3、加上断点
4、run
在调试状态加个断点看看错误消息是什么对分析错误应该有帮助的
作者: funxu 发布时间: 2011-11-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28