【问题标题】:Need simple example to use TAdoConnection to connect to MySql default database需要简单的例子来使用 TAdoConnection 连接到 MySql 默认数据库
【发布时间】:2010-08-30 12:49:48
【问题描述】:

最终答案:

这不是 Delphi 问题,只是配置问题。

我使用 Xampp 来提供 MySql 服务器。

C:\xampp\mysql\bin>mysql.exe  --version
mysql.exe  Ver 14.14 Distrib 5.1.41, for Win32 (ia32)

所以,正确的连接字符串是

'Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=mysql;User=root; Password=;Option=3;'

(别忘了加载the MySql ODBC 5.1 driver

短代码:

procedure TForm1.Button1Click(Sender: TObject);
  var AdoConnection : TAdoConnection;
      DataBase : String;
begin
  Try
    AdoConnection := TADOConnection.Create(nil);

    if AdoConnection.Connected then  // already connected?
    begin
      MessageDlg('Already connected', mtInformation, [mbOK], 0);
      Exit;
    end;

    begin
      DataBase := 'mysql';

      AdoConnection.LoginPrompt:=False;//dont ask for the login parameters
      AdoConnection.ConnectionString := 'Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=' + Database + ';User=root; Password=;Option=3;';

      AdoConnection.Connected := True; //open the connection

      MessageDlg('Connected to databse "' + DataBase + '".', mtInformation, [mbOK], 0);
    end;

  Except
    On E: Exception do
    begin
      MessageDlg('Cannot connect to databse "' + DataBase + '"!.' + #13 + #10 + 'Please report this problem (is MySql running?)', mtError, [mbOK], 0);
    end;
  end;    
end;

我发现了一些旧代码,并试图弄清楚。

这里有一些代码可以尝试默认 MySql d/b 调用 mysql 作为用户 root 没有密码..

const MYSQL_CONNECT_STRING_FROM_DELPHI =
  'Driver={MySQL ODBC 3.51 Driver};Server=%s;Database=%s;User=%s; Password=%s;Option=3;'; 

var AdoConnection : TAdoConnection;
AdoConnection.ConnectionString := 
       Format(MYSQL_CONNECT_STRING_FROM_DELPHI,['localhost',DataBase,'root','']);
AdoConnection.Connected := True;

(我本可以使用 TADOCommand,但更喜欢在我的代码中只使用 TAdoConnection)

当我运行它时,我得到ELoException [Microsoft][ODBC Driver manager] Data source name not found and no default driver specified

我最近重新安装了 windows 和 delphi 7。我可能忘记安装其他东西,还是代码有问题?


编辑/更新:

我刚刚意识到我需要从http://dev.mysql.com/downloads/mirror.php?id=367506 获取 MySql ODBC 连接器

我这样做了,现在错误是 Unknown MySql Server host "localhost"(我有 Xampp 运行 Apache 服务器,所以 localhost 应该没问题)


编辑 2:此代码以前可以在开发 PC 上运行,但不能在另一台 PC 上运行。而且,现在全新安装后,它在开发机器上不起作用。也许更多的是配置问题而不是代码,但是有没有人有一些我可以比较的代码,以防万一?

【问题讨论】:

  • 我总是使用connectionstrings.com 来获取我正在创建的连接字符串的模板。
  • +1 谢谢。看起来我使用了正确的字符串,所以我猜问题出在其他地方。

标签: delphi odbc ado


【解决方案1】:

也许你有 Windows Vista 或 Windows 7,启用了 IPv6 协议(这是默认设置),这很好,但是当 localhost 解析为 IP 时,IPv6 似乎具有优先权,所以 本地主机 = ::1 代替 本地主机 = 127.0.0.1

尝试在您的连接定义(ODBC 或其他)中将localhost 替换为127.0.0.1

问题可能是 MySQL 服务器没有通过 IPv6 侦听,或者正在侦听但防火墙被阻止。如果您想尝试从另一台计算机(另一台主机)连接并且如果您无法解决 IPv6 问题(调整您的防火墙或 MySQL 配置),那么您始终可以尝试使用其 IP 地址而不是主机名来访问您的服务器.

【讨论】:

  • +1 谢谢。好吧,我在 Windows 7 注册表中禁用了 IPv6,但这并没有帮助。硬编码 127.0.0.1 也没有请阅读更新问题,谢谢
  • 那你还在接收Unknown MySql Server host "localhost"吗?还是 localhost 现在更改为 127.0.0.1?除了代码之外,ODBC DSN 中的 localhost 是否也发生了变化?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
  • 2016-03-24
  • 2017-07-05
相关资源
最近更新 更多