- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 Delphi 2007 中的 dbexpress 组件连接到 MySQL 数据库,但收到错误消息“模块 'dbxmys30.dll' 中的地址 0B86E258 处发生访问冲突。读取地址 00000000”。
我有一个使用 MySQL 驱动程序和设置来连接到 MySQL 5.1 数据库的 TSQLConnection。我可以毫无问题地将其设置为事件状态。
当我尝试使用任意数量的组件从数据库获取数据时,就会出现问题。更具体地说,我有一个 TSQLTable 对象。我将 SQLConnection 参数设置为我创建的 TSQLConnection,并将表名称设置为数据库中的表。当我尝试将 Active 设置为 true 时,出现错误。这发生在设计模式和运行时。尝试从数据库获取数据的任何其他 dbx 组件也会发生这种情况。
我正在运行 Windows 7 64 位以及 MySQL 5.1 客户端和服务器。我可以使用 MySQL 查询浏览器在数据库上运行查询,没有任何问题。
任何帮助将不胜感激。谢谢!
最佳答案
您存在版本不兼容问题,您使用的“libmysql.dll”版本与构建 dbx 驱动程序所针对的版本不兼容。 This thread embarcadero 论坛建议使用版本“5.0.27”和 this thread建议“5.0.24”。我成功的最新版本是“5.1.11”。
顺便说一句,因为“libmysql.dll”不包含版本信息,我厌倦了跟踪哪个 dll 是哪个版本,我不得不写这个小东西:
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FLastFile: string;
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
shellapi;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
Width := 350;
Height := 110;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
DragAcceptFiles(Handle, False);
end;
procedure TForm1.FormPaint(Sender: TObject);
var
R: TRect;
begin
Canvas.TextOut(40, 16, 'Drop libmysql.dll to find out version');
R := Rect(14, 40, ClientWidth, ClientHeight);
DrawText(Canvas.Handle, PChar(FLastFile), Length(FLastFile), R, DT_LEFT);
end;
function GetVersion(ClientDll: PChar): UINT;
const
FUNC = 'mysql_get_client_version';
FUNCTIONNOTFOUND = '%s: ''%s'' in ''%s''.';
UNABLETOLOADLIB = 'Unable to load library (''%s''): ''%s''.';
var
LibHandle: HMODULE;
GetClientVersionFunc: function: Integer;
begin
Result := 0;
LibHandle := LoadLibrary(ClientDll);
if LibHandle <> 0 then begin
try
@GetClientVersionFunc := GetProcAddress(LibHandle, FUNC);
if @GetClientVersionFunc <> nil then begin
Result := GetClientVersionFunc;
end else
raise EOSError.CreateFmt(FUNCTIONNOTFOUND,
[SysErrorMessage(GetLastError), FUNC, ClientDll]);
finally
FreeLibrary(LibHandle);
end;
end else
raise EOSError.CreateFmt(UNABLETOLOADLIB, [ClientDll,
SysErrorMessage(GetLastError)]);
end;
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
len: Integer;
DropName: string;
Ver: UINT;
begin
len := DragQueryFile(Msg.Drop, 0, nil, 0) + 1;
SetLength(DropName, len);
len := DragQueryFile(Msg.Drop, 0, PChar(DropName), len);
SetLength(DropName, len);
try
try
Ver := GetVersion(PChar(DropName));
except
FLastFile := '';
raise;
end;
if Boolean(Ver) then
FLastFile := DropName + #10 +'[' + IntToStr(Ver) + '] - ' +
IntToStr(Ver div 10000) + '.' + IntToStr((Ver div 100) mod 100)
+ '.' + IntToStr(Ver mod 100)
else
FLastFile := '';
finally
Invalidate;
DragFinish(Msg.Drop);
Msg.Result := 0;
end;
end;
关于dbxmys30.dll 中的 Delphi 2007 DBX 访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4494333/
我正在研究 Delphi XE2 和 mysql 以及 dbexpress 组件 我有这个代码 StrQu:='select * from mytable'; //my actual query i
为了制作一个简单的数据库应用程序,我已将所有组件删除到表单中。连接测试成功。设置组件的属性并运行应用程序后,将显示该消息。 “00218766 处的模块 project6.exe 中出现异常 TDBX
我是一名优秀的程序员,十分优秀!