Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.12.2015, 16:54
an4eva an4eva вне форума
Прохожий
 
Регистрация: 08.12.2015
Сообщения: 2
Версия Delphi: delphi10seattle
Репутация: 10
Восклицание Как подружить android с MYSQL

Как показала практика мобильные платформы (в моём случае ANDROID) уверенно работают только с моноДБ базами (SQLite, Interbase). Как же подружить Android и MYSQL.





При разработке ПО столкнулся с такой проблемой " Как подружить базу данных и android приложение. Инструмент разработки Delphi 10 Seattle, При использовании FireDac возникла ошибка при компиляции. Google подсказал что и FireDAC, ни один другой штатный компонент не дружит на Android с MYSQL. После долгого и внимательного изучения, было принято решение использовать компоненты фирмы Devart, а именно UniDAC https://www.devart.com/ru/dac.html

Аналогов этим компонентам нет, многофункциональные и удобные компоненты для разработки клиент-серверных приложений. Так как моя программа состояла из 3-х звенной архитектуры "модуль-работающий со специфичной базой данных программы на сервере и отправляющий данные в нашу (репликационную MYSQL базу), сама база данных MYSQL, и android приложение забирающее эти данные, было принято решение разработать как серверную так и клиентскую часть с использованием UniDAC, достаточно большая документация включающая в себя примеры использования, грамотная и оперативная тех. поддержка, все это в совокупности очень пригодилось при интеграции данных с БД.

UniDAC, MyDAC позволяют обращаться напрямую к базе прямо с мобильного телефона. В ОС Windows за это отвечает библиотека mysql, при отсутствии которой программа отказывается работать. При использовании UniDAC компонентов на мобильной платформе эта необходимость отпадает за нее отвечает сам обращаемый компонент, вы сами это поймете просидев несколько часов за этим нерешаемым примером. Только представьте какие возможности открываются перед вами.

Допустим вы директор управляющей компании и хотите видеть все платежи и графики уборки территорий. С помощью delphi 10 seattle и unidac, вы сможете не только видеть но и вносить свои корректировки в базу данных.
Если вы системный администратор и необходимо удаленно следить за БД, то и тут вам поможет эта связка.
Для меня этот компонент решил сразу несколько задач, первая это метод подключения, вторая убрать сервер приложений.

Компоненты фирмы Devart можно скачать на официальном сайте https://www.devart.com/unidac/download.html, доступен пробный период 60 дней, если вы хотите проверить их на работоспособность.
К примеру для того чтобы соединить мобильное приложение с базой штатными средствами нужно писать сервер приложений, то есть между базой и телефоном, вставлять еще одно звено. Практика показывает чем больше элементов в системе, тем больше её шанс выйти из строя, зачем придумывать велосипед и вставлять костыли?!


Когда можно обратиться напрямую!



Касаемо безопасности:
При первом подключении мы должны проверить а может ли вообще этот телефон подключиться к базе? Пользователь вводит логин и пароль, берем его imei (из программного кода, пользователь не должен сам его вводить, иначе мы теряем в безопасности)и пишем запрос SELECT * FROM users WHERE imei= "imei" and login="login" and pass="pass" Если результат равен нулю то мы заканчиваем работу с этим пользователем. Для запросов используем UniQuery.SQL.Text. Если вы хотите проверку на стороне базы как скажут самые умные, то что вам мешает использовать хранимые процедуры? и тогда при передаче наших данных процедура вернет ответ: можно или нельзя.
Для того чтобы узнать imei можно воспользоваться вот этим кодом, (листинг не мой)
Обязательно поставить разрешение в
Option/Susespermission/ReadPhoneState=true




uses
FMX.Helpers.Android, Androidapi.JNI.JavaTypes,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.Telephony, Androidapi.JNIBridge;

var
TelephonyObj: JObject;
TelephonyManager: JTelephonyManager;
begin
TelephonyObj := SharedActivityContext.getSystemService(TJContext.J avaClass.TELEPHONY_SERVICE);
TelephonyManager := TJTelephonyManager.Wrap((TelephonyObj as ILocalObject).GetObjectID);
Label1.Text := JStringToString(TelephonyManager.getDeviceId);







Ниже полный список поддерживаемых баз данных:




Пример использование UniDAC


Создаем новый проект
Кидаем на форму:
UniConnection1
UniQuery1



Далее настраиваем Uniconnection1. В моем случае сервер MYSQL находится у меня на компьютере, поэтому я ввел адрес 127.0.0.1

Ниже кусок кода (чтобы было понятней):

uniConn := TUniConnection.Create(nil);
uniQuery := TUniQuery.Create(nil);

try

uniConn.Server := 127.0.0.1;
uniConn.Port := 3306;
uniConn.Username := root;
uniConn.Password := root;
uniConn.Database := dbtest;
uniConn.ProviderName := TMySQLUniProvider.GetProviderName;
uniConn.Open;

// Abfrage
uniQuery.Connection := uniConn;
uniQuery.SQL.Text := Format('SELECT * FROM mobile WHERE hostname=''user1''',[dbtest, mypc]); // пишем запрос к базе, (для использования просто подставляем свои данные)
uniQuery.Open;
uniQuery.First;
if not uniQuery.Eof then begin
stUser := uniQuery.FieldByName('username').AsString;
expDate := uniQuery.FieldByName('reset_date').AsDateTime;


uniQuery.Edit;
uniQuery.FieldByName('last_update').AsDateTime := Now;
uniQuery.Post;
end;
uniQuery.Close;

finally
uniConn.Free;
uniQuery.Free;
end;


Ищите легкие пути, и не придумывайте велосипед)

Последний раз редактировалось an4eva, 10.12.2015 в 10:02. Причина: без редактирования
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:01.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter