代码之家  ›  专栏  ›  技术社区  ›  Mawg says reinstate Monica

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

  •  2
  • Mawg says reinstate Monica  · 技术社区  · 14 年前

    最终答案:

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

    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 作为用户 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

    我做了那件事,现在错误是 Unknown MySql Server host "localhost"


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

    1 回复  |  直到 6 年前
        1
  •  2
  •   SalvadorGomez    14 年前

    也许您有WindowsVista或Windows7,并且启用了IPv6协议(这是默认的),这很好,但是当localhost解析为IP时,似乎IPv6具有优先级,所以 而不是 本地主机=127.0.0.1

    尝试替换 localhost 具有 127.0.0.1 在您的连接定义中(ODBC或其他任何东西)。

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