Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
Добрый вечер!

Имеется база данных на MySQL, которая расположена на удаленном VPS сервере. Имеется необходимость как получать, так и отправлять в неё данные. По предыдущему топику сделал заключения, что это можно организовать только по средствам PHP (или python, JS) скриптов, которые в свою очередь будут возвращать данные в JSON формате или каком-нибудь другом, а на клиенте необходимо распарсить ответ. Вопрос: Каким образом это выглядит на практике? Какие компоненты используются, где располагаются скрипты PHP и как до них можно достучаться. Есть у кого опыт разработки подобного?
30 апр 20, 20:25    [22125935]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
AltHasp
Member

Откуда:
Сообщений: 182
Евгений Стронг
Какие компоненты используются, где располагаются скрипты PHP и как до них можно достучаться. Есть у кого опыт разработки подобного

Основных компонента два - мозги и руки. Скрипты PHP хранятся на сервере (там где и web-сервер). Мы используем например Perl, а так Гугль в помощь.
Удачи !
1 май 20, 12:10    [22126139]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
AltHasp
Евгений Стронг
Какие компоненты используются, где располагаются скрипты PHP и как до них можно достучаться. Есть у кого опыт разработки подобного

Основных компонента два - мозги и руки. Скрипты PHP хранятся на сервере (там где и web-сервер). Мы используем например Perl, а так Гугль в помощь.
Удачи !


Мозги и руки есть. Необходимо понимать, каким образом это на практике реализуется. Если я с помощью PHP вытаскиваю инфу с БД и возвращаю в JSON, то можно это дело на стороне клиента распарсить. Это понятно. Вопрос вот в чем: У меня запрос к БД будет отличаться от того, кто на клиенте его запускает. Проще говоря - это будет запрос с параметров ID клиента, который должен будет увидеть только свои данные. В таком случае мне готовый PHP генерить и кидать его на сервер? Как вот такие моменты реализуют?
1 май 20, 12:15    [22126142]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3788
Евгений Стронг,

на сервер передаёшь json-запрос со всеми нужными параметрами. сервер тебе отдаёт назад json-ответ с данными. все запросы к базе делаешь на стороне сервера в php или что там у тебя, там же парсер json и сборщик ответов база > json.
1 май 20, 12:46    [22126160]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
makhaon
Евгений Стронг,

на сервер передаёшь json-запрос со всеми нужными параметрами. сервер тебе отдаёт назад json-ответ с данными. все запросы к базе делаешь на стороне сервера в php или что там у тебя, там же парсер json и сборщик ответов база > json.


Направление понятно. Спасибо. Проблема заключается в том, что нет достаточных знаний в веб технологиях, чтобы слёту подобное реализовать, поэтому и ищу способ решить это задачу малой кровью. Уже снова подумываю быть может о Datasnap на MSSQL. Что будет проще, пока не ясно в общем. Почитаю про php и json более основательно. Или ещё думаю варант складывать данные на стороне клиента в какой-нибудь Firebase и настроить синхронизацию с MySQL, но опять же наверняка там будет веб с API.
1 май 20, 12:52    [22126163]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
AltHasp
Member

Откуда:
Сообщений: 182
Евгений Стронг,
У нас к примеру есть ftp-доступ к нашему web-серверу (на сервере у них Linux+Apache+MySQL+PHP) и мы тупо купируем php файлы
с шаблонами форм и запросов. Остальное - работа самого сервера. Еще по таску копируем свою базу себе на сервер, на случай падения основного. Что еще написать ? Есть всякие редакторы для облегчения генерирования PHP-кода и локальный офисный (тестовый) web-сервер.

"Всё - телемаркет" (C).
1 май 20, 12:53    [22126164]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
AltHasp
Евгений Стронг,
У нас к примеру есть ftp-доступ к нашему web-серверу (на сервере у них Linux+Apache+MySQL+PHP) и мы тупо купируем php файлы
с шаблонами форм и запросов. Остальное - работа самого сервера. Еще по таску копируем свою базу себе на сервер, на случай падения основного. Что еще написать ? Есть всякие редакторы для облегчения генерирования PHP-кода и локальный офисный (тестовый) web-сервер.

"Всё - телемаркет" (C).


У меня VPS и полный доступ с внешним IP. Apache + MySQL + PHP. На счет редакторов посмотрю, спасибо. Так в лом погружать в изучение этих веб дебрей для реализации одной задачи. Поэтому такие удобные "билдеры" будут очень кстати)
1 май 20, 12:59    [22126165]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52445

Евгений Стронг
Так в лом погружать в изучение этих веб дебрей

Тогда UniGUI тебе в руки. На ведроиде будет работать через браузер.

Posted via ActualForum NNTP Server 1.5

1 май 20, 13:06    [22126170]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3788
Евгений Стронг,
если на сервере можно запускать свои бинарники, то можно запилить в том или ином виде бэк на делфи и никакого php не нужно.
1 май 20, 13:13    [22126174]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
Dimitry Sibiryakov

Евгений Стронг
Так в лом погружать в изучение этих веб дебрей

Тогда UniGUI тебе в руки. На ведроиде будет работать через браузер.


Я ещё вот на такую штуку нарвался сейчас. Дешевле и поинтереснее на мой взгляд.
1 май 20, 13:23    [22126177]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
makhaon
Евгений Стронг,
если на сервере можно запускать свои бинарники, то можно запилить в том или ином виде бэк на делфи и никакого php не нужно.


У меня Centos-7-x86_64 и ISPManager панель. Даже не представляю, каким образом тут бинарник можно запустить. Думаю это не возможно технически.
1 май 20, 13:30    [22126183]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3788
Евгений Стронг,

ssh доступ есть? обычно vps подразумевает ssh насколько я знаю. для линукс-бэка, к слову, тебе хватит полностью бесплатного fpc/lazarus, главное что бы бинари можно было просунуть на хост.

Сообщение было отредактировано: 1 май 20, 13:40
1 май 20, 13:35    [22126186]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
makhaon
Евгений Стронг,

ssh доступ есть? обычно vps подразумевает ssh насколько я знаю. для линукс-бэка, к слову, тебе хватит полностью бесплатного fpc/lazarus, главное что бы бинари можно было просунуть на хост.


Доступ по ssh есть. Сейчас почитаю про fpc/lazarus. Спасибо!
1 май 20, 13:55    [22126194]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
makhaon
Евгений Стронг,

ssh доступ есть? обычно vps подразумевает ssh насколько я знаю. для линукс-бэка, к слову, тебе хватит полностью бесплатного fpc/lazarus, главное что бы бинари можно было просунуть на хост.


Неа. Нельзя запустить бинарник.
1 май 20, 14:31    [22126218]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
rgreat
Member

Откуда:
Сообщений: 6563
makhaon,

Под центос и сама дельфя норм компилирует.
А проги на лазаре - тормозные.

Сообщение было отредактировано: 1 май 20, 15:54
1 май 20, 15:54    [22126267]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3788
rgreat,

я как-то особо тормозов на лазарусе для бэка не заметил
1 май 20, 17:54    [22126308]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
ПавелZZ
Member

Откуда:
Сообщений: 42
Евгений Стронг

Я ещё вот на такую штуку нарвался сейчас. Дешевле и поинтереснее на мой взгляд.

Евгений, попробовали phprad?
Есть какое-то мнение?
22 янв 21, 09:44    [22267380]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12572
Задам глупый вопрос. А почему бы тупо не открыть порт наружу?
22 янв 21, 10:48    [22267418]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 729
_Vasilisk_,

ты конечно извини, но порт наружу открывать нельзя категорически.
Во первых, клиенты принципиально должны быть изолированы от прямого доступа к БД, обмен данными исключительно через API промежуточного сервиса.
Во вторых, делать такой подарок всяким нехорошим людям?
22 янв 21, 12:06    [22267503]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12572
asutp2
Во первых, клиенты принципиально должны быть изолированы от прямого доступа к БД
Учитывая уровень знаний автора не думаю, что это имеет особый смысл
asutp2
Во вторых, делать такой подарок всяким нехорошим людям?
Нестандартный порт + устойчивый пароль. Можно было бы еще прикрутить SSL сертификаты, но тогда опять возвращаемся к первому пункту
22 янв 21, 12:58    [22267597]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
ПавелZZ
Евгений Стронг

Я ещё вот на такую штуку нарвался сейчас. Дешевле и поинтереснее на мой взгляд.

Евгений, попробовали phprad?
Есть какое-то мнение?


Поставил, попробовал. Не плохой инструмент, но нет туториалов на русском, а так из него можно слепить что-то интересное. А что такое? Необходимо применить где-то?
3 фев 21, 14:37    [22273897]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1255
Евгений Стронг
makhaon
Евгений Стронг,

на сервер передаёшь json-запрос со всеми нужными параметрами. сервер тебе отдаёт назад json-ответ с данными. все запросы к базе делаешь на стороне сервера в php или что там у тебя, там же парсер json и сборщик ответов база > json.


Направление понятно. Спасибо. Проблема заключается в том, что нет достаточных знаний в веб технологиях, чтобы слёту подобное реализовать, поэтому и ищу способ решить это задачу малой кровью. ...

Makhaon на мой взгляд дал ответ. Конечно, какие-то знания нужны, но вот для конкретной задачи на мой взгляд не так уж и много.
В php для работы с JSON есть аж целых две функции json_encode и json_decode. И еще две функции обработки ошибок.
Для работы с MySQL есть несколько API, например https://www.php.net/manual/ru/book.mysqli.php
И в документации есть примеры, и в интернете вообще есть материалы по этой теме.
Ну и, понятно, нужны какие-то общие представления о том, как вообще php скрипт на сервере получает запросы и отвечает.

Я задачу типа вашей делал, обновлял каталог изделий. Клиент на Delphi, Indy, для удобства редактирования данных использовал ClientDataset, на сервере несколько скриптов, которые получают запрос от клиента, формируют SQL-запрос к БД и полученный ответ отправляют назад клиенту в виде JSON. Я бы сказал ничего такого особо сложного.

Сообщение было отредактировано: 3 фев 21, 14:59
3 фев 21, 14:58    [22273935]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1255
Евгений Стронг
makhaon
Евгений Стронг,

ssh доступ есть? обычно vps подразумевает ssh насколько я знаю. для линукс-бэка, к слову, тебе хватит полностью бесплатного fpc/lazarus, главное что бы бинари можно было просунуть на хост.


Неа. Нельзя запустить бинарник.
Странно, VPS (virtual private server) это же как бы ваш сервер, только виртуальный, где вы что хотите, то и запускаете. Это на обычном виртуальном хостинге часто бинарники нельзя запускать.
3 фев 21, 15:14    [22273968]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
s62
Евгений Стронг
пропущено...


Неа. Нельзя запустить бинарник.
Странно, VPS (virtual private server) это же как бы ваш сервер, только виртуальный, где вы что хотите, то и запускаете. Это на обычном виртуальном хостинге часто бинарники нельзя запускать.


Да, если он виндовый. А тут же своя панель на линухе. Vesta или как у меня ISP Manager.
3 фев 21, 21:52    [22274366]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
ПавелZZ
Member

Откуда:
Сообщений: 42
Евгений Стронг
ПавелZZ
пропущено...

Евгений, попробовали phprad?
Есть какое-то мнение?


Поставил, попробовал. Не плохой инструмент, но нет туториалов на русском, а так из него можно слепить что-то интересное. А что такое? Необходимо применить где-то?

Ищу аналог Delphi для разработки web приложений.
Но пока ничего не могу найти.
Все-таки визуальная разработка интерфейса гораздо удобнее, быстрее и нагляднее.
Такое ощущение, что веб разработчики имеют какое-то жуткое предубеждение против визуальных инструментов. :(

Не нашел у них на сайте демо-приложений, созданных на phprad.
5 фев 21, 09:12    [22275275]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
b0rk
Member

Откуда: Харьков
Сообщений: 602
Евгений Стронг
ищу способ решить это задачу малой кровью

Евгений Стронг
У меня VPS и полный доступ с внешним IP

Если есть база MySQL с внешним IP и хочется решить проблему малой кровью, то может просто взять MyDAC и конектиться из Android напрямую к MySQL? Если нет внешнего IP у MySQL, то MyDAC умеет конетиться через HTTPS тунель или через SSH тунель.

Сообщение было отредактировано: 5 фев 21, 09:24
5 фев 21, 09:23    [22275282]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 15029
ПавелZZ
Ищу аналог Delphi для разработки web приложений.


могу порекомендовать фреймворк uniGUI, єто и бэкэнд и фронтэнд
правда, это не аналог, а именно фреймворк, ну и цена великовата... зато там много чего уже готового реализовано

Сообщение было отредактировано: 5 фев 21, 09:23
5 фев 21, 09:29    [22275288]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 1200
вот еще один вариант, по идее работает и под андроидом и под iOS
https://tmssoftware.com/site/remotedb.asp
5 фев 21, 10:05    [22275318]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
ПавелZZ
Евгений Стронг
пропущено...


Поставил, попробовал. Не плохой инструмент, но нет туториалов на русском, а так из него можно слепить что-то интересное. А что такое? Необходимо применить где-то?

Ищу аналог Delphi для разработки web приложений.
Но пока ничего не могу найти.
Все-таки визуальная разработка интерфейса гораздо удобнее, быстрее и нагляднее.
Такое ощущение, что веб разработчики имеют какое-то жуткое предубеждение против визуальных инструментов. :(

Не нашел у них на сайте демо-приложений, созданных на phprad.


Да вот тоже хотел перейти в веб разработку, а там полный хаос и разруха. Простые вещи делаются с большими проблемами, разными инструментами, да ещё и всё руками. Кошмар какой-то. Развитие идет в сторону визуального программирования уже, а тут наоборот к блокноту вернулись. Посмотри ещё в сторону https://bubble.io/. Классная штука, но платная и придется всегда платить, так как проект не перенесешь на свой сервак. В общем будем и дальше искать...
5 фев 21, 10:16    [22275327]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
ПавелZZ
Member

Откуда:
Сообщений: 42
X11
ПавелZZ
Ищу аналог Delphi для разработки web приложений.


могу порекомендовать фреймворк uniGUI, это и бэкэнд и фронтэнд
правда, это не аналог, а именно фреймворк, ну и цена великовата... зато там много чего уже готового реализовано


Да, знаю про uniGUI, но мне нужно написать небольшое веб-приложение для нашего сайта, расположенного на хостинге.
На uniGUI, на сколько я знаю, еще нельзя делать под линукс.
Да и приложение совсем небольшое. Один грид и форма редактирования.
На uniGUI, это как из пушки по воробьям.
Хочется чего-нибудь легкого.
Я собственно уже сделал его на Ext JS, но там все руками. :(
Привыкнув к хорошему на Delphi :) , хочется чего-нибудь похожего и для разработки web приложений.
5 фев 21, 10:25    [22275333]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 15029
ПавелZZ
На uniGUI, на сколько я знаю, еще нельзя делать под линукс.


Можно, но будет бинарник (so-библиотека) для Апач. Т.е., если у вас там свой сервер, то подойдет. На сколько я знаю, то на простых обычных хостингах нельзя запускать бинарники под Апачем.
Обрати внимание на их обновленный сайт, который работает на Джумле, а на главной странице встроен фрейм (блок) с их uniGUI-примерами и это все крутится на Линуксе.
5 фев 21, 10:47    [22275345]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 15029
ПавелZZ
Да и приложение совсем небольшое. Один грид и форма редактирования.


сколько раз я наблюдал, как "небольшое" приложение начинает разростаться...
5 фев 21, 10:48    [22275346]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
ПавелZZ
Member

Откуда:
Сообщений: 42
X11
ПавелZZ
На uniGUI, на сколько я знаю, еще нельзя делать под линукс.


Можно, но будет бинарник (so-библиотека) для Апач. Т.е., если у вас там свой сервер, то подойдет. На сколько я знаю, то на простых обычных хостингах нельзя запускать бинарники под Апачем.
Обрати внимание на их обновленный сайт, который работает на Джумле, а на главной странице встроен фрейм (блок) с их uniGUI-примерами и это все крутится на Линуксе.


У нас обычный хостинг, поэтому я и ищу что-нибудь другое.
Кстати, кто-нибудь имеет опыт работы на HTML5 Builder?
5 фев 21, 13:02    [22275504]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 587
Омг, а занахрена "простую страничку с гридом" обязательно ваять на дельфях? Накидайте какой-нибудь вуе или бутстрап и все
5 фев 21, 14:21    [22275609]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
ПавелZZ
Member

Откуда:
Сообщений: 42
Fr0sT-Brutal
Омг, а занахрена "простую страничку с гридом" обязательно ваять на дельфях? Накидайте какой-нибудь вуе или бутстрап и все


Я уже накидал на Ext JS.
Но это все в текстовом редакторе.
вуе или бутстрап, как я понимаю, тоже.
А хочется все-таки что-то похожее на RAD среду, т.к. планируются и другие разработки.
И для этого хочется иметь все преимущества RAD среды.
Все-таки визуальная разработка интерфейса гораздо удобнее, быстрее и нагляднее.
5 фев 21, 14:57    [22275644]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 587
ПавелZZ

А хочется все-таки что-то похожее на RAD среду, т.к. планируются и другие разработки.

Для формы и грида особо не нужен RAD.
А для большего - за минуту нашлось вот это https://storybook.js.org, наверняка и другие варианты есть.
Просто у дельфи для веба перспектив, как мне кажется, 0.0
5 фев 21, 18:21    [22275904]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 4987
Fr0sT-Brutal
Просто у дельфи для веба перспектив, как мне кажется, 0.0

Если запилят поддержку WASM, то у обезьяны появится шанс работать в браузере, а это весьма круто.
5 фев 21, 19:12    [22275955]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3788
автор
Простые вещи делаются с большими проблемами, разными инструментами, да ещё и всё руками. Кошмар какой-то

более того, с пеной у рта доказывают как де это круто, модно и молодежно я даже не всегда могу найтись что сказать (задизайнив сотню+ форм в унигуе). ну вот как слепцам объяснить как выглядит слон? и не слепые ж... поставь и пощупай, но нет...
автор
Просто у дельфи для веба перспектив, как мне кажется, 0.0

может оно, конечно, и так. но тысячи юзеров у Фаршада уже явно есть на недешевом, в общем-то фреймворке. к слову, может есть смысл ТСу глянуть TMS Web Core, он гораздо более легковесный чем Унигуй+Ext Js.

Сообщение было отредактировано: 6 фев 21, 00:34
6 фев 21, 00:40    [22276103]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 1200
ну по поводу тысяч пользователей unigui мне кажется это преувеличение, продукт весьма недешевый, нишевый, так что сомневаюсь, несколько сотен вполне вероятно

что касается webcore, да там другая технология, ваш код фактически компилируется в js и спокойно выполняется в браузере на стороне клиента. Но тут я бы сказал за счет большей гибкости уже начинают требоваться дополнительные знания, тот же html, css, js. В свою очередь унигуи практически полностью берет на себя эту головную боль и программист может вообще этим не заморачиваться если не хочет.
6 фев 21, 15:11    [22276347]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
автор
более того, с пеной у рта доказывают как де это круто, модно и молодежно я даже не всегда могу найтись что сказать (задизайнив сотню+ форм в унигуе). ну вот как слепцам объяснить как выглядит слон? и не слепые ж... поставь и пощупай, но нет...


Я вообще уже задумался о том, что это связано с менталитетом, присущему в большинстве своем нашему народу. Дай только возможность пострадать, так бегут с радостью. От IDE даже отказываются, чтобы в блокноте накидать дизайн или код и в итоге, вытирая пот, скомпилить наконец-то свой хэлоу ворлд и всё. Если бы я знал веб, в достаточной мере, я бы с удовольствием уже сделал бы билдер, чтобы народ не тратил время в пустую, делая одно и тоже. Можно ведь просто накидать мышкой дизайн, растянув его как надо и назначить события на объекты. Это же прекрасная практика. Возьми тот же майкрософт, когда они внедрили WPF. Теперь дизайн пиши руками)) Можно конечно и кинуть мышкой на форму, но там будет ад с масштабированием и взаимодействием с другими объектами. В общем приходится изучать целую технологию, чтобы сделать сложно то, что раньше кидалось просто мышкой на форму. Философия на понятно совершенно. Развитие явно пошло куда-то не в ту сторону.
6 фев 21, 17:13    [22276390]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
DrMengele
Member

Откуда:
Сообщений: 18
b0rk,

Это самый простой вариант.
Сам им пользуюсь.
16 фев 21, 13:42    [22281575]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
DrMengele
b0rk,

Это самый простой вариант.
Сам им пользуюсь.


А можешь чуть подробнее? Платный компонент? На сколько просто происходит обращение к БД? Просто SQL запросами (это было бы сказочно), а под капотом переводится в http запрос?
16 фев 21, 14:59    [22281648]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
b0rk
Member

Откуда: Харьков
Сообщений: 602
Евгений Стронг
А можешь чуть подробнее? Платный компонент? На сколько просто происходит обращение к БД? Просто SQL запросами (это было бы сказочно), а под капотом переводится в http запрос?

Тут можно триалку взять MyDAC Там есть демо проект, откомпилируйте его под Android и посмотрите как он работает. Лучше начать пробовать с локальным сервером, т.к. облачный скорее всего будет требовать SSH сертификат, а разобраться как его сгенерировать на сервере и потом настроить у себя - это не 5 минут, если делаешь первый раз.

Еще важный вопрос: имеет ли ваш облачный MySQL сервер внешний IP или он скрыт за фаерволом. Если скрыт за файерволом, то надо будет настраивать еще SSH или HTTPS тунель.

Хорошо или плохо серверу БД напрямую торчать наружу через внешний IP - вопрос риторический. Такие клаудные гиганты, как Oracle, Microsoft Azure, Amazon RDS for MySQL и многие другие совершено спокойно дают прямой доступ к клаудным серверам БД через внешний IP. Некоторые считают, что это плохая практика, поэтому, чтобы сервак не торчал напрямую в интернет, используют SSH или HTTPS тунели.
16 фев 21, 16:31    [22281709]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
DrMengele
Member

Откуда:
Сообщений: 18
Евгений Стронг,

Нужно положить файл tunnel.php (или любое другое название) на хостинг.
Вот его содержимое
+


<?php

/* ##########################

Devart HttpTunnel v1.73.

HTTP tunnel script.

This script allows you to manage database server even if the corresponding port is blocked or remote access to database server is not allowed.

##########################

*/
if ( !function_exists('sys_get_temp_dir')) {
function sys_get_temp_dir() {
if (!empty($_ENV['TMP'])) { return realpath($_ENV['TMP']); }
if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); }
if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); }
$tempfile=tempnam(__FILE__,'');
if (file_exists($tempfile)) {
unlink($tempfile);
return realpath(dirname($tempfile));
}
return false;
}
}

$tmp_dir = sys_get_temp_dir();
if(!$tmp_dir){
define('SYSTEM_TMP_DIR', '');
}
else{
$last_symbol = substr($tmp_dir, -1);
if($last_symbol == DIRECTORY_SEPARATOR){
define('SYSTEM_TMP_DIR', $tmp_dir);
}
else{
define('SYSTEM_TMP_DIR', $tmp_dir . DIRECTORY_SEPARATOR);
}
}

$SUB_DIRECTORY = SYSTEM_TMP_DIR . 'tunnel_files';
$LOG_FILE_NAME = 'httptunnel_server.log';
$CONN_FILE_NAME = '_connections.id.php';
$LOGFILE = $SUB_DIRECTORY . '/' . $LOG_FILE_NAME;
$CONN_FILE = $SUB_DIRECTORY . '/' . $CONN_FILE_NAME;

$LOG = 1; // Set to "0" to disable logging
$LOG_DEBUG = 1; // Set to "0" to disable additional debug logging
$LOGFILEHANDLE = 0;
$MAXLOGSIZE = "4000000";
$LIFETIME = 180; // script lifetime in seconds. If script was started and got no client within that time - it exits.
$READ_WRITE_ATTEMPTS = 100;

global $SUB_DIRECTORY;


function checkFunctionExists($functionName) {
if (!function_exists($functionName)) {
echo "Required function <b>$functionName</b> does not exist.</br>";
return false;
}

return true;
}

// Creates connection temporary file if not exists and checks permission to write
function CreateAndCheckConnFile($fileName) {

global $SUB_DIRECTORY;

if (file_exists($fileName)){
$newFile = @fopen($fileName, 'a');
if($newFile)
fclose($newFile);
else
echo "<b>Error</b>: Failed to open ($fileName) file: Permission denied.";

}
else{
if(!is_dir($SUB_DIRECTORY)){
mkdir($SUB_DIRECTORY);
}
$newFile = @fopen($fileName, 'w');
if($newFile){
fwrite($newFile, "<?php echo 'Devart HTTP tunnel temporary file.'; exit; ?>\r\n"); // forbid viewing this file through browser
fclose($newFile);
}
else
echo "<b>Error</b>: Failed to create ($fileName) file: Permission denied.";
}

if(!$newFile)
exit;
}

if (!isset($_REQUEST["a"])) { // query from browser

echo "Devart HttpTunnel v1.73<br />";

$functionList = array(
// "set_time_limit",
"stream_socket_server",
"stream_socket_client",
"stream_socket_get_name",
"stream_set_blocking",
"stream_socket_accept",
);

$exist = true;
foreach($functionList as $functionName) {
$result = checkFunctionExists($functionName);
$exist = $exist && $result;
}

if ($exist)
CreateAndCheckConnFile($CONN_FILE);

if ($exist){
echo "Tunnel script is installed correctly. <br />You can establish connections through the HTTP tunnel.";
if ($LOG==1) {
echo "<br /> <br /><b>Loging is enabled.</b><br />Log files are located in the tunnel_files folder, which, in its turn, is located in the temporary folder of the operating system: " .$LOGFILE;
};
}
else
echo "Required PHP functions listed above are not available. Tunneling script will not work without these functions. Please read PHP manuals about how to install listed functions.";
exit;
}

function myErrorHandler($errno, $errstr, $errfile, $errline) {
switch ($errno) {
case E_ERROR:
$errfile=preg_replace('|^.*[\\\\/]|','',$errfile);
echo $ERRSTR."Error in line $errline of file $errfile: [$errno] $errstr\n";
exit;
}
}

function shutdown () {
global $ipsock, $rmsock, $outcount, $incount, $td, $te, $sockname, $useunix;

if (connection_status() & 1) { // ABORTED
logline ($_SERVER["REMOTE_ADDR"].": Irregular tunnel disconnect -> disconnecting server");
logline ($_SERVER["REMOTE_ADDR"].": Sent ".$outcount." bytes, received ".$incount." bytes");
} elseif (connection_status() & 2) { // TIMEOUT
logline ($_SERVER["REMOTE_ADDR"].": PHP script timeout -> disconnecting server");
logline ($_SERVER["REMOTE_ADDR"].": Sent ".$outcount." bytes, received ".$incount." bytes");
}

if ($ipsock) fclose($ipsock);
if ($rmsock) fclose($rmsock);
}

function logline ($msg) {
log_line_to_file(0, $msg);
}

function logdebug($msg) {
log_line_to_file(1, $msg);
}

function logerr($msg) {
global $ERRSTR;

logline($msg);
echo $ERRSTR;
echo $msg;
}

function log_line_to_file ($debug, $msg) {
global $LOG, $LOG_DEBUG, $MAXLOGSIZE, $LOGFILE, $LOGFILEHANDLE;
if ($LOG && ((! $debug) || $LOG_DEBUG)) {
$LOGFILEHANDLE=fopen ($LOGFILE, "a");
if ($LOGFILEHANDLE) {
fwrite ($LOGFILEHANDLE, date("d.m.Y H:i:s")." - $msg\r\n");
$lstat=fstat($LOGFILEHANDLE);
if ($lstat["size"]>$MAXLOGSIZE) rotatelog();
fclose($LOGFILEHANDLE);
}
}
}

function rotatelog() {
global $LOG, $MAXLOGSIZE, $LOGFILE, $LOGFILEHANDLE;
if ($LOG) {
fwrite ($LOGFILEHANDLE, date("d.m.Y H:i:s")." - Logfile reached maximum size ($MAXLOGSIZE)- rotating.\r\n");
fclose ($LOGFILEHANDLE);
rename ($LOGFILE, substr_replace($LOGFILE,md5(microtime()),-3).".log");
$LOGFILEHANDLE=fopen ($LOGFILE, "a");
if (!$LOGFILEHANDLE)
$LOG=0;
else
fwrite ($LOGFILEHANDLE, date("d.m.Y H:i:s")." - Opening new Logfile.\r\n");
}
}

function create_client_socket() {
global $_REQUEST;

if (!isset($_REQUEST["port"])) {
echo $ERRSTR."Port not set.";
return 0;
}

$port = $_REQUEST["port"];
$client = stream_socket_client("tcp://127.0.0.1:".$port);
if ($client) {
stream_set_blocking($client, 1);
}
return $client;
}

function send_server_script_message($command) {
global $_REQUEST;

$client = create_client_socket();
if (!$client) {
logerr("Failed to create client socket");
return FALSE;
}
if (fwrite($client, $command, 1) === FALSE) {
logerr("Failed to send message to server script.");
fclose($client);
return FALSE;
}
fclose($client);
return TRUE;
}

function increase_script_lifetime() {
global $LIFETIME;
if (function_exists("set_time_limit")) {
set_time_limit($LIFETIME);
logdebug("Script liftetime incremented with $LIFETIME");
}

}

function write_to_socket($socket, $buffer, $count) {
global $READ_WRITE_ATTEMPTS;

$totalCount = 0;
$retryCount = 0;

do {
if ($retryCount > 0) {
usleep(10000); // 10ms
}

if (!$socket)
break;

$written = fwrite($socket, $buffer, $count);
$buffer = substr($buffer, $written);
$totalCount += $written;

if ($retryCount > 0) {
logdebug("Attempt to write #".($retryCount + 1)." Write: ".$written);
}

$retryCount = $retryCount + 1;
} while($totalCount < $count && $retryCount < $READ_WRITE_ATTEMPTS);

if ($totalCount != $count)
logline("ERROR: Failed to write to socket $count bytes, $totalCount actually written.");

return $totalCount;
}

// reads specified byte count from socket
function read_from_socket($socket, &$buffer, $count) {
global $READ_WRITE_ATTEMPTS;

$totalCount = 0;
$retryCount = 0;

$buffer = "";
$readBuffer;

do {
if ($retryCount > 0) {
usleep(10000); // 10ms
}

if (!$socket)
break;

$readBuffer = fread($socket, $count);
$read = strlen($readBuffer);
$buffer = $buffer.$readBuffer;

if ($retryCount > 0) {
logdebug("Attempt to read #".($retryCount + 1)." Read: ".$read);
}

$totalCount += $read;
$retryCount = $retryCount + 1;

} while($totalCount < $count && $retryCount < $READ_WRITE_ATTEMPTS);

if ($totalCount != $count)
logerr("Failed to read from socket $count bytes, $totalCount actually read.");

return $totalCount;
}

// packet: size of data count | data count | data
// lengths: 1 byte | up to 255 bytes, typically 1 - 5| up to $MaxCount
function write_data_packet($socket, &$buffer, $count) {

$countLength = strlen($count);
// write length of data count digit
write_to_socket($socket, $countLength, 1);
// write data count
write_to_socket($socket, $count, $countLength);
// write data
$writeCount = write_to_socket($socket, $buffer, $count);
if ($writeCount == $count)
return $writeCount;
else
return 0;
}

function read_data_packet($socket, &$buffer) {

// obtain data length digit length
read_from_socket($socket, $countSize, 1);
// read data length
read_from_socket($socket, $readCount, $countSize);
$expectedReadCount = $readCount;
// read data
$readCount = read_from_socket($socket, $buffer, $readCount);
if ($readCount == $expectedReadCount)
return $readCount;
else
return FALSE;
}

// Start of the tunnel script
$isServer = FALSE;

if (version_compare("5.0.0",phpversion())==1) die ("Only PHP 5 or above supported");
error_reporting(0);
set_error_handler("myErrorHandler");
register_shutdown_function ("shutdown");
// no-cache
Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache"); // HTTP/1.1
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");

header("Content-Type: application/octet-stream");

ob_implicit_flush();

// Maximum bytes to read at once
$MaxReadCount = 16*1024;

// operation success identification
$OKSTR = "OK:";
$ERRSTR = "ER:";

$CONN_FILE_MAXSIZE = 100;

// Primary tunnel connection
// need the following REQUEST vars:
// a: "c"
// s: remote server name
// p: remote server port

// every operation output at least first three chars identifying the success of operation: "OK:" if succeeded, "ER:" if not.
//

if ($_REQUEST["a"]=="c") { // run server script
$isServer=TRUE;
// clear log
if ($LOG_DEBUG) {
// truncate log file
$logfile = fopen($LOGFILE, 'w');
fclose($logfile);
}

$dad=$_REQUEST["s"];
$dpo=$_REQUEST["p"];

// open the interprocess socket
$errno = 0;
$errstr = "";
$ipsock = stream_socket_server("tcp://127.0.0.1:0", $errno, $errstr);

if (!$ipsock) {
logerr("stream_socket_server() failed: reason:".$errno." ".$errstr);
exit;
}

$port=stream_socket_get_name($ipsock,false);
$port=preg_replace('/^.*?:/','', $port);

stream_set_blocking($ipsock, 1);

// open the remote socket
//
logline("Trying to create remote socket at $dad: $dpo.");
$rmsock = stream_socket_client("tcp://".$dad.":".$dpo, $errno, $errstr);
if (!$rmsock) {
logerr("Failed to create remote socket at $dad: $dpo. ".$errno." ".$errstr);
logline("Trying to create remote socket at unix:///var/lib/mysql/mysql.sock");
$rmsock = stream_socket_client("unix:///var/lib/mysql/mysql.sock", $errno, $errstr);
if (!$rmsock) {
logerr("Failed to create remote socket at unix:///var/lib/mysql/mysql.sock".$errno." ".$errstr);
exit;
}
else {
if (isset($_REQUEST["nonblock"]))
$block = 0;
else
$block = 1;
stream_set_blocking($rmsock, $block);
logline("Connected to remote socket unix:///var/lib/mysql/mysql.sock");
}
}
else {
if (isset($_REQUEST["nonblock"]))
$block = 0;
else
$block = 1;
stream_set_blocking($rmsock, $block);
logline("Connected to remote $dad: $dpo");
}

// write connection identificator to file. Echo'ing is not appropriate in case of antiviral software, it would be blocked until script finishes
$newConnFile = FALSE;
$connFileMode = "a";

if (file_exists($CONN_FILE)) {
$connFile = fopen($CONN_FILE, "r");
$lstat=fstat($connFile);
fclose($connFile);
if ($lstat["size"]>$CONN_FILE_MAXSIZE) {
$connFileMode = "w";
$newConnFile = TRUE;
}
}
else {
$newConnFile = TRUE;
}

$connFile = fopen($CONN_FILE, $connFileMode);
if ($connFile) {
if ($newConnFile) {
fwrite($connFile, "<?php echo 'Devart HTTP tunnel temporary file.'; exit; ?>\r\n"); // forbid viewing this file through browser
}
$connectionId = str_replace("_", " ", $_REQUEST["id"]);
fwrite ($connFile, $connectionId." ".$port."\r\n");
fclose($connFile);
}
else {
logerr("Failed to create connection temporary file.");
exit;
}

if (function_exists("set_time_limit")) {
set_time_limit($LIFETIME);
}


$exit = false;
$buffer = array();
$countBuffer = array();

while (!$exit) {
logdebug("Waiting for client...");
$client = stream_socket_accept($ipsock);
logline("Client accepted");
if ($client === FALSE) {
logline("ERROR: Bad client.");
continue;
}
// read command
$count = read_from_socket($client, $buffer, 1);
if ($count == 0) {
logline("Error reading client command.");
$exit = true;
}

logdebug("Read from client ($count): ".$buffer[0]);

$command = $buffer[0];

increase_script_lifetime();

if ($command == "x") { // close
logline("Shutting down on client request.");
$exit = true; // shutdown
}
else if ($command == "r") { // read

if (!$rmsock) {
logline("ERROR: rmsock is off");
$exit = true;
break;
}

$readCount = 0;

$buffer = fread($rmsock, $MaxReadCount);
if ($buffer === FALSE) {
logline("ERROR: Remote server disconnected.");
$exit = true;
break;
}
else {
$readCount = strlen($buffer);
logline("Read from remote:($readCount)");
}

if ($readCount >= 0) {
if ($readCount == 0)
logline("Nothing to read from remote.");

$writeCount = write_data_packet($client, $buffer, $readCount);
logdebug("Write to client($writeCount): $buffer");
if ($readCount > 0 && $writeCount == 0) {
logerr("Failed to write to client.");
$exit = true;
}
}
}
else if ($command == "w") { // write

if (!$rmsock) {
logline("ERROR: rmsock is off");
$exit = true;
break;
}
$readCount = read_data_packet($client, $buffer);
logline("Write from client: $readCount");
if ($readCount > 0) {
$writeCount = write_to_socket($rmsock, $buffer, $readCount);
logdebug("Write to remote($writeCount): $buffer");
}
}
else if ($command == "l") { // increment lease time
logline("Lease time increased.");
}
else if ($command == "t") { // test connection command
$writeCount = write_to_socket($client, $OKSTR, strlen($OKSTR));
if ($writeCount == 0)
$exit = true;
}
else {
logline("ERROR: Unknown command: $command. Exiting.");
$exit = true;
}
}

logline("Server script closed.");
exit;
}

if ($_REQUEST["a"]=="r") { // read

$client = create_client_socket();
if (!$client) {
logerr("Failed to connect to server script.");
exit;
}

logdebug("Client: Reading from server script");

if (write_to_socket($client, "r", 1) == 0) { // write "Read" command
logerr("Write to server script failed.");
fclose($client);
exit;
}

$buffer;
$readCount = read_data_packet($client, $buffer);
if ($readCount === FALSE) {
logerr("Failed to read response from server script.");
fclose($client);
exit;
}

$totalCount = strlen($OKSTR) + $readCount;

$outputStr = $OKSTR.$buffer;

header("Content-Length: ".$totalCount);

logline("Client: Read from server $readCount");
echo $outputStr;

fclose($client);
exit;
}

if ($_REQUEST["a"]=="w") { // write
$client = create_client_socket();
if (!$client) {
logerr("Failed to connect to server script.");
exit;
}

$postBody= isset($_POST['base64body'])?base64_decode($_POST['base64body']):file_get_contents("php://input"); // Retrieve RAW POST data
$writeData = $postBody;
$expectedWriteCount = strlen($writeData);
$writeCount = write_to_socket($client, "w", 1); // indicate that this is the "Write" command
if ($writeCount > 0)
$writeCount = write_data_packet($client, $writeData, $expectedWriteCount);

if ($writeCount == 0) {
logerr("Write to server script failed.");
fclose($client);
exit;
}

logdebug("Client: Written $writeCount");

fclose($client);
echo $OKSTR;
exit;
}

if ($_REQUEST["a"]=="x") { // close

echo $OKSTR."Shutted down.";
send_server_script_message("x");
exit;
}

if ($_REQUEST["a"] == "l") { // increment server script lease time

if (send_server_script_message("l"))
echo $OKSTR."Incremented server script lease time.";
exit;
}

if ($_REQUEST["a"] == "t") { // test newly created connection

$connectionId = str_replace("_", " ", $_REQUEST["id"]);
logline($connectionId);
$connections = file_get_contents($CONN_FILE);

if ($connections === FALSE) {
logerr("Failed to open $CONN_FILE.");
exit;
}

$lines = explode("\r\n", $connections);

// skip first line
for($i = 1; $i < count($lines); ++$i) {
$line = $lines[$i];
$pos = strpos($line, $connectionId);
if ($pos === FALSE)
continue;

if ($pos === 0) { // starts with
$parts = explode(" ", $line);
if (count($parts) != 3) {
echo "Invalid connection record";
exit;
}

echo $OKSTR.$parts[2]."\n"."$LIFETIME\n";
exit;
}
}

logerr("Connection entry not found.");
exit;
}

logerr("Invalid tunneling script parameter: ".$_REQUEST["a"]);

?>


Далее по инструкции
https://www.devart.com/mydac/docs/network_tunneling.htm

От себя добавлю: В св-вах TMyConnection -> Properties -> Protocol поставить mpHttp

Сообщение было отредактировано: 16 фев 21, 17:32
16 фев 21, 17:34    [22281757]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
DrMengele
Member

Откуда:
Сообщений: 18
b0rk
Евгений Стронг
А можешь чуть подробнее? Платный компонент? На сколько просто происходит обращение к БД? Просто SQL запросами (это было бы сказочно), а под капотом переводится в http запрос?

Тут можно триалку взять MyDAC Там есть демо проект, откомпилируйте его под Android и посмотрите как он работает. Лучше начать пробовать с локальным сервером, т.к. облачный скорее всего будет требовать SSH сертификат, а разобраться как его сгенерировать на сервере и потом настроить у себя - это не 5 минут, если делаешь первый раз.

Еще важный вопрос: имеет ли ваш облачный MySQL сервер внешний IP или он скрыт за фаерволом. Если скрыт за файерволом, то надо будет настраивать еще SSH или HTTPS тунель.

Хорошо или плохо серверу БД напрямую торчать наружу через внешний IP - вопрос риторический. Такие клаудные гиганты, как Oracle, Microsoft Azure, Amazon RDS for MySQL и многие другие совершено спокойно дают прямой доступ к клаудным серверам БД через внешний IP. Некоторые считают, что это плохая практика, поэтому, чтобы сервак не торчал напрямую в интернет, используют SSH или HTTPS тунели.


Можно без https, чисто по http без сертификатов.
16 фев 21, 17:41    [22281764]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
DrMengele,

Спасибо тебе, друг. Буду пробовать!
16 фев 21, 17:44    [22281771]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
DrMengele
Member

Откуда:
Сообщений: 18
Евгений Стронг
DrMengele
b0rk,

Это самый простой вариант.
Сам им пользуюсь.


А можешь чуть подробнее? Платный компонент? На сколько просто происходит обращение к БД? Просто SQL запросами (это было бы сказочно), а под капотом переводится в http запрос?


Маленькая таблица 4500 записей открывается мгновенно.
16 фев 21, 17:44    [22281772]     Ответить | Цитировать Сообщить модератору
 Re: Delphi Rio 10.3 Android получение данных с MySQL  [new]
DrMengele
Member

Откуда:
Сообщений: 18
Евгений Стронг
DrMengele,

Спасибо тебе, друг. Буду пробовать!

Не за что.
Если будут большие сложности, у меня в профиле почта есть.
16 фев 21, 17:50    [22281777]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить