Delphi 需要简单的示例来使用TAdoConnection连接到MySql默认数据库

Delphi 需要简单的示例来使用TAdoConnection连接到MySql默认数据库,delphi,odbc,ado,Delphi,Odbc,Ado,最后答覆: 这不是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

最后答覆:

这不是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;'
(别忘了加载

执行此操作的简短代码:

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调用d
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]数据源名称未找到,并且未指定默认驱动程序

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


编辑/更新:

我刚刚意识到我需要从中获取MySql ODBC连接器

我这样做了,现在错误是未知的MySql服务器主机“localhost”(我有一个运行Apache服务器的Xampp,所以localhost应该可以)



编辑2:此代码以前在开发PC上工作,但在另一台上不工作。现在重新安装后,它在开发计算机上不工作。可能更多的是配置问题,而不是代码,但有人有一些代码我可以比较,以防万一吗?

可能您有启用IPv6协议的Windows Vista或Windows 7(这是默认设置),这很好,但当本地主机解析为IP时,IPv6似乎具有优先级,所以 localhost=::1 而不是 localhost=127.0.0.1

尝试将连接定义(ODBC或其他任何内容)中的
localhost
替换为
127.0.0.1


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

+1谢谢。我在Windows 7注册表中禁用了IPv6,但这没有帮助。硬编码127.0.0.1也没有帮助。请阅读更新以回答问题,谢谢您仍然收到未知的MySql服务器主机“localhost”吗then?或者localhost现在更改为127.0.0.1?localhost是否在ODBC DSN中也更改了,除了在代码中?我总是用来获取我正在创建的连接字符串的模板。+1谢谢。看起来我使用了正确的字符串,所以我想问题出在其他地方。