【发布时间】:2013-01-22 22:19:39
【问题描述】:
我正在尝试让 ADO 连接在 Delphi XE3 中工作,但遇到了很大的困难。
我的机器 (Win7 x64) 上安装了 ODBC 驱动程序,该驱动程序在 ODBC 数据源下显示为“mySQL ODBC 5.1 驱动程序”。 mysql 5.5版。
我的理解是我应该能够在表单上放置一个 TadoConnection 组件,然后为它分配一个适当的连接字符串,如下所示:
var
conn: TADOConnection;
procedure TForm1.Button1Click(Sender: TObject);
begin
conn := conn.Create(nil);
conn.ConnectionString := 'DRIVER={MySQL ODBC 5.1 Driver}; SERVER=myserver; PORT=3306; DATABASE=mysql; UID=myuser; PASSWORD=mypassword;OPTION=3;';
conn.Connected := true;
end;
当我运行应用程序并单击按钮时,我得到一个错误
Project Project1.exe 引发异常类 EOleException,并带有消息“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”。
谁能帮帮我?我错过了什么?我已经尝试在网上寻找示例,但到目前为止没有任何乐趣。任何建议都非常受欢迎...
【问题讨论】:
-
您很可能已经配置了 C:\Windows\System32\odbcad32.exe instedad of C:\Windows\SysWOW64\odbcad32.exe
-
这通常是安装 64 位驱动程序然后尝试从 32 位代码访问它的问题(反之亦然)。驱动程序和您的可执行文件是否都具有相同的“位数”(例如,都是 32 位或都是 64 位)?如果是这样,您是否配置了 32 位 ODBC 驱动程序(如上面@bummi 所述)? (控制面板中的默认设置是 64 位 ODBC 管理员。)
-
我认为你们俩都可以有所作为。我打开了 syswow64\odbcad32.exe 并且那里没有可用的驱动程序。这是否意味着我找错了司机?我应该拥有哪一个?我有一个 32 位代码库,所以我应该使用 32 位驱动程序 - 我假设我拥有的驱动程序是 32 位的,就好像我打开 system32\odbcad32.exe 驱动程序显示如果我单击添加(而不是在 syswow64\ odbcad32.exe)...谢谢
-
供参考 - 原来留下的 cmets 是正确的。我不得不删除现有的驱动程序并安装 32 位版本的 mysql odbc 连接器(x86、32 位)。使用最新版本,因此连接字符串驱动程序读取 'DRIVER={MySQL ODBC 5.2a Driver}'。
-
为什么要使用 ADO?看起来有点棘手的链:Delphi -> ADO -> ODBC ->mySQL。也许你可以得到 MySQL 的原生 OLEDB 驱动程序?或者也许你可以使用原生的 Delphi 工具,比如 DB Express、ZeosDB、AnyDAC、UniDAC?特别是考虑到微软正在弃用 ADO,用 ADO 开始新项目似乎是令人反感的方向。或者至少也许你可以通过 Torry 冲浪并为 Delphi 获得一些直接的 ODBC 连接组件。
标签: mysql delphi delphi-xe3