• 0
Djchel

Android MySQL+UniDac+3G

Вопрос

Доброго дня,форумчане.

Уважаемые знатоки,ответьте пожалуйста,в чем у меня может быть проблема.Создаю приложение для Андрюши как дипломный проект. Использую связку MySQL+UniDac(direct connect). При подключении к интернету через WiFi прога работает на ура.Но при подключении через 3G не подключается никак.Connectoin timeout.Пробовал увеличить его- безрезультатно.может настройки какие поправить необходимо или ещё какие секреты есть.

P.S. использовать прослойку не вижу смысла,да и знаний пока маловато в этой области.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

6 ответов на этот вопрос

  • 0
11 час назад, Djchel сказал:

Доброго дня,форумчане.

Уважаемые знатоки,ответьте пожалуйста,в чем у меня может быть проблема.Создаю приложение для Андрюши как дипломный проект. Использую связку MySQL+UniDac(direct connect). При подключении к интернету через WiFi прога работает на ура.Но при подключении через 3G не подключается никак.Connectoin timeout.Пробовал увеличить его- безрезультатно.может настройки какие поправить необходимо или ещё какие секреты есть.

P.S. использовать прослойку не вижу смысла,да и знаний пока маловато в этой области.

Привет, а где находится БД, не в твоей сети случайно, а ты по локальному адресу пытаешься конектиться? =))

Изменено пользователем umkes
Vitaldj, Равиль Зарипов (ZuBy) и Pax Beach понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

У меня еще проблема была аналогичная, только MySQL база лежит в Azure. Оказалось, что Yota думает, что я раздаю интернет с коммуникатора на PC — не характерный для смартфона трафик.

Т.е. оператор может глушить обращение на не http порты.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Есть аналогичная проблема. выставлял  Connectoin timeout любые значения. эффекта 0. Проблему решаю так. форма один и форма 2. у всех компонентов свойство Connectoin false. С предыдущей формы программно задаю Connectoin true. если долго нахожусь на форме ввел данные и надо их внести в базу, то сначала Connectoin false  Connectoin true. и потом только заношу данные в базу. и так же когда покидаю форму, тоже разрываю связь. пока только такой выход. За то программа работает нормально и не пишет Lost connection server

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
11 час назад, Pax Beach сказал:

У меня еще проблема была аналогичная, только MySQL база лежит в Azure. Оказалось, что Yota думает, что я раздаю интернет с коммуникатора на PC — не характерный для смартфона трафик.

Т.е. оператор может глушить обращение на не http порты.

 

тоже есть такая фигня. Ёта думает что мобила  в режиме точки доступа и предлагает ограничить подключение. выбираю бесплатно на скорости 128Мбт/с на 30 мин. после 30 мин 4Г опять начинает нормально работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
6 часов назад, AndroidHalfNoob сказал:

Есть аналогичная проблема. выставлял  Connectoin timeout любые значения. эффекта 0. Проблему решаю так. форма один и форма 2. у всех компонентов свойство Connectoin false. С предыдущей формы программно задаю Connectoin true. если долго нахожусь на форме ввел данные и надо их внести в базу, то сначала Connectoin false  Connectoin true. и потом только заношу данные в базу. и так же когда покидаю форму, тоже разрываю связь. пока только такой выход. За то программа работает нормально и не пишет Lost connection server

При распределенной работы с БД, из-за нестабильности канала связи, так и приходится делать. Открыл сокет (при работе с REST), открыл соединение с БД, выполнил запрос, закрыл соединение, если нужно, закрыл сокет.

Если выполнение запросов критично по времени, то такое решение — не лучший вариант.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

К сожалению компоненты баз данных пишут далекие от мира теоретики. На своем горьком опыте убедился что защита от ошибок транспорта нулевая, контроль целостности передаваемых данных нулевой, даже примитивная обработка локальных исключений тоже нулевая. На реальном производстве, переключение с кабеля на wifi, переход с одной wifi сети в другую, или переключение на мобильный интернет приводит к краху приложения и потере какой нибудь накладной на буровые головки стоимостью в пару десятков миллионов рублей.

В некоторых проектах использую передачу JSON по HTTPS, с контрольными суммами блоков данных и автоинкрементными счетчиками переданных/принятых блоков. Конечно на стороне сервера приходится держать прокладку, но зато работает стабильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: Илья Захаров
      Помогите пожалуйста, поделитесь информацией или примерчиком. Есть база данных MySQL на хостинге Макхост. Мне нужно для соединения,работы с ней использовать SSH протокол я не понимаю как это сделать... может в компонентах FireDAC есть какая ни будь фича?  
    • Автор: AlexShaman
      База mssql 2008 r2
      Если кинуть на форму компонент tUniTable (или tUniQuery ) и настроить их на таблицу в которой хоть одно поле integer или float
      Ошибка bus error.
      Только под Андроид.
      В Delphi xe 8 работает без проблем.
      У кого-то есть такая же проблема ?
    • Автор: Axbor
      Пытаюсь запустить демо проект из коробки XE10 которая находится по этому пути: C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Database\FireDAC\Samples\Getting Started\MySQL
      При попытке соединится с сервером выдает ошибку 
      Client does not support authentication protocol requested by server; consider upgrading MySQL client
      Как это исправит?
    • Автор: Pax Beach
      Столкнулся с проблемой взаимодействия своего приложения Android с сервером MySQL в локальной сети.
      Задача простая: скачать на планшет таблицу с данными с сервера MYSQL в локальной сети, выполнить на планшете действия с данными, выгрузить обратно на MySQL уже в другую таблицу результат действий.
      Начал разбираться, пересмотрел и перечитал множество примеров других разработчиков. Оказалось, что в RAD Studio 10 Seattle нет компонентов, способных заставить работать Android устройство напрямую с сервером MySQL.
      Конечно есть FireDAC, dbExpress.
      По факту, хоть разработчики dbExpress и заявляют, что компонент TSQLConnection работает с Android platform, но при попытке открыть соединение с MySQL сервером на Android устройстве сообщает об ошибке. На Windows компонент отрабатывает соединение нормально.
       

        Разработчики FireDAC честно заявили, что их соединение с MySQL на Android работать не будет.

       
       
      Какие есть выходы:
      1.    Создать DataSnap сервер, который будет установлен на сервере и взаимодействовать с Android клиентом и сервером MySQL. DataSnap будет являться прослойкой между Android и MySQL, через него можно осуществлять обмен данными, обернутыми в JSON.
      Для меня этот вариант не подходит, потому что по различным причинам устанавливать на сервер (или даже рабочую станцию) дополнительный сервер приложений не представляется возможным.
      2.    Использовать дополнительные компоненты, позволяющие работать с MySQL из-под Android и iOS.
       
      Поиск нужных компонентов для RAD Studio показал, что все они платные. И уж если бесплатных не найти, покупать нужно хороший продукт, которые поддерживает как минимум MySQL, SQLite, SQLServer.

       
       
      Не буду начинать холивар, скажу только, что для меня наиболее подходящим оказался компонент UniDAC от Харьковской компании Devart. Решающими факторами стали: удобнная политика лицензирования, приемлемая для задач цена, быстрая скорость ответа технической поддержки, конечно, поддержка всех распространенных серверов баз данных и нужных мне платформ, работа с большими объемами данных (более 100 тыс. записей), возможность 2 месяца тестировать компоненты, получить существенную скидку при покупке, рекомендации разработчиков с форума www.fire-monkey.ru .
       

       
       
      На сайте www.devart.com выбрал свою версию RAD Studio и скачал инсталяторы компонентов UniDAC и MyDAC. Установил и запустил RAD Studio. В главном меню RAD Studio появились соответствующие пункты меню, а в палитру компонентов добавились три закладки.
       

       
       
      Вы самостоятельно может скачать и попробовать компоненты можно по этой ссылке https://www.devart.com/unidac/
       
      Реализация кода:
                      Итак, я собрал тестовый стенд. На котором разместил 3 соединения, 3 набора данных, три кнопки для соединения и разъединения с сервером MySQL, и две метки, в которые при успешном соединении записываю случайную запись «Название компании» из таблицы «Покупатели», в одну Ansi формат, в другую UTF8. В качестве демонстрационной базы данных использую Northwind, поставляемую с RAD Studio.
                      Как видно на рисунке, тестировалась работа компонентов dbExpress, MyDAC, UniDAC.
       

       
       
      Двойной щелчок на компоненте соединения, открываются свойства соединения, прописываем для компонентов необходимые параметры и запускаем.

       
       
                      Я прилагаю пример приложения, который вы самостоятельно сможете запустить на своей RAD Studio.
                      В результате, как и ожидалось, компоненты dbExpress не смогли соединиться с базой данных и вывалился с ошибкой “TDBXError: Unable to find procedure DBXLoader_GetDriver”. Которую было не просто отловить из-за отсутствия в компоненте обработчика Connection Timeout.

       
       
                      Компоненты MyDAC и UniDAC мгновенно соединялись с MySQL и считывали записи.
      Моя задача решена, переписываю решение в рабочий проект. Надеюсь и вам будет полезен этот пример.
       

      MyDACvsDbExpressDemo.zip
    • Автор: Devart
      Следующие компоненты полностью совместимы с FireMonkey и позволяют создавать приложения для мобильных платформ Android и iOS.
       
      IBDAC - FireMonkey компонент для работы с базами данных Firebird и Interbase. Поддерживает Windows, Linux, Mac OS X, Android, iOS, FreeBSD.   
       
      PGDAC - FireMonkey компонент для работы с базами данных PostgreSQL. Поддерживает Windows, Linux, Mac OS X, Android, iOS, FreeBSD.   
       
      ODAC - FireMonkey компонент для работы с базами данных Oracle. Поддерживает Windows, Linux, Mac OS X, Android, iOS, FreeBSD.
       
      MyDAC - FireMonkey компонент для работы с базами данных MySQL. Поддерживает Windows, Linux, Mac OS X, Android, iOS, FreeBSD.
       
      LiteDAC - FireMonkey компонент для работы с базами данных SQLite. Поддерживает Windows, Linux, Mac OS X, Android, iOS, FreeBSD.
       
      SDAC - FireMonkey компонент для работы с базами данных SQL Server. Поддерживает Windows, Linux, Mac OS X, Android, iOS, FreeBSD.
       
      UniDAC - FireMonkey компонент для работы с базами данных SQL Server, Oracle, MySQL, PostgreSQL, SQLite, Firebird. Поддерживает Windows, Linux, Mac OS X, Android, iOS, FreeBSD.
    • Автор: Vitaldj
      Добрый день. Несколько дней пытался решить вопрос с использованием embedded сервера в программе на fmx. Пробую писать универсальную программу под win32/64 и MacOs. Использую компоненты mydac. При компиляции под виндовс проблем не возникает, в директорию ложу и libmysqld.dll и все нужные файлы (data и тд.). Встроенная в приложение база данных работает без нареканий. И совсем ничего не получается под MacOs. В дистрибьютиве mysql под MacOs не нахожу файл встроенной библиотеки libmysqld.dylib  (перерыл все директории). Так же пытался переименовывать разные файлы-библиотеки на libmysqld.dylib - безрезультатно. Дельфи говорит об ошибке. Ну типи того, что файл (библиотека) не тот, не может найти вход и все такое. Что делать? Где взять libmysqld.dylib? Помогите, без этого смысл писать на FMX не вижу ((((
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу