ADOConnection отлов ошибок

Рейтинг: 0Ответов: 1Опубликовано: 15.03.2015

Есть коннект с базой, не могу отловить ошибку - "Ошибка подключения". При отключении сети, тест на падения роутера.

 on E: EOleException do
 begin
   // Не верный путь к БД
   if (E.ErrorCode=-2147467259) then
     ADOConnection1.Connected := false;
   ADOConnection1.KeepConnection := false;
   ADOConnection1.Close();
   if messageDlg('Неверный путь к БД или сервер не отвечает! Запустить мастер подключения?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
   begin
     SettingDB.Show;
   end;

Ответы

▲ 1

Если у Вас MySQL, то Ваш случай ADOConnection.Errors[0].NativeError = 2006

on E: EOleException do
begin
  if (ADOConnection.Errors.Count > 0) then
  begin
    case (ADOConnection.Errors[0].NativeError) of
      0:
        //Microsoft OLE DB Provider for ODBC Drivers
        //[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
        //IM002
        //-2147467259
        Result := crError;
      1045: //Access denied
        //Error: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR)
        //Message: Access denied for user '%s'@'%s' (using password: %s)
        //http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html#error_er_access_denied_error 
        Result := crDenied;
      1046: //No database selected
        //Error: 1046 SQLSTATE: 3D000 (ER_NO_DB_ERROR)
        //Message: No database selected
        //http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html#error_er_no_db_error 
        Result := crNoDB;
      1049: //Unknown database
        //Error: 1049 SQLSTATE: 42000 (ER_BAD_DB_ERROR)
        //Message: Unknown database '%s'
        //http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html#error_er_bad_db_error 
        Result := crNoDB;
      2003: //Can't connect
        //Error: 2003 (CR_CONN_HOST_ERROR)
        //Message: Can't connect to MySQL server on '%s' (%d)
        //http://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html#error_cr_conn_host_error
        Result := crConnectionToHostError;
      2005: // Unknown host
        //Error: 2005 (CR_UNKNOWN_HOST)
        //Message: Unknown MySQL server host '%s' (%d)
        //http://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html 
        Result := crUnknownHost;
      2006: // Server gone
        //Error: 2006 (CR_SERVER_GONE_ERROR)
        //Message: MySQL server has gone away
        //http://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html#error_cr_server_gone_error 
        Result := crServerGone;
    else
      Result := crError;
    end;
  end
  else
    ApplicationShowException(E); // raise;
  Exit;
end;