Нужен простой пример использования TAdoConnection для подключения к базе данных MySql по умолчанию - PullRequest
2 голосов
/ 30 августа 2010

Окончательный ответ:

Это была не проблема 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;'

(и не забудьте загрузить драйвер MySql ODBC 5.1 !

Сокращенный код для этого:

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 / bcalld 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. Возможно, я забыл установить что-то еще, или это код ошибки?


Редактирование / обновление:

Я только что понял, что мне нужно получить MySql ODBC-коннектор от http://dev.mysql.com/downloads/mirror.php?id=367506

Я сделал это, и ошибка теперь Unknown MySql Server host "localhost" (у меня Xampp работает на сервере Apacheтак что localhost должен быть в порядке)


Редактировать 2: Этот код ранее работал на компьютере разработчика, но не на другом.во-вторых, теперь после новой установки он не работает на компьютере разработчика.Может быть, это больше вопрос конфигурации, чем кода, но есть ли у кого-нибудь код, который я могу сравнить, на всякий случай?

1 Ответ

2 голосов
/ 30 августа 2010

Может быть, у вас 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-адрес вместо имени хоста..

...