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

时间:2010-08-30 12:49:48

标签: 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;'

(不要忘记加载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 calld 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上没有。而且,现在在全新安装后,它无法在开发机器上运行。可能更多的是配置问题而不是代码,但是有没有人能够比较一些代码,以防万一?

1 个答案:

答案 0 :(得分:2)

也许你有Windows Vista或Windows 7,启用了IPv6协议(默认),这很好,但似乎IPv6在localhost解析为IP时具有优先级,所以     localhost = :: 1 代替     localhost = 127.0.0.1

尝试在连接定义中使用localhost替换127.0.0.1(ODBC或其他任何内容)。

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