2016-09-15 3 views
-1

Я делаю приложение для Android, которое будет иметь бэкэнд-базу данных (MySQL).Попытка понять отношения MySQL/PHP/JSON/Restful/Android

Из моего исследования, похоже, одним из способов подключения к базе данных MySQL является использование PHP для создания HTTP-запроса к базе данных, которое затем будет возвращать данные в виде объекта JSON, который декодируется.

PHP is used to make a GET/POST to the database (often using a service like Retrofit) 
The database fetches or posts the appropriate data and must alert the client/return data 
The database sends back information that is JSON form 
The client decodes the returned JSON 

Это правильная логика? Почему PHP необходимо сделать запрос? Является ли это приемлемым способом взаимодействия с базой данных MySQL из приложения Android? Есть ли у вас какие-либо советы, чтобы предлагать это?

+0

PHP не нужен, и многие утверждают, что это плохой выбор, который никто никогда не должен использовать для каких-либо целей ... но вам это нужно, или * некоторый * вид веб-языка программирования или среды/среды (например, Express, OpenResty, Mojolicious или один из, казалось бы, бесчисленных других), чтобы подключить сервер приложений ..., чтобы, как минимум, оповещать и аутентифицировать запросы из приложения через Интернет, отправить их в db и сериализовать ответ. Вы не хотите, чтобы приложение связывалось напрямую с db по многим причинам, включая многочисленные проблемы с безопасностью и масштабируемостью. –

ответ

0

Этот подход выглядит как для веб-сервера, а не для клиента (а тем более для клиента Android). Обычно серверы имеют базы данных, а клиенты - «потребители» этих данных. Однако у клиентов также есть базы данных для хранения этих данных.

PHP - это серверная технология, посредством которой вы можете использовать URL и HTTP для отправки и получения данных. Затем PHP можно использовать для подключения к базе данных для предоставления богатого контента клиенту.

В Android ваше устройство (скорее всего) не будет иметь URL-адрес или веб-сайт. Он может иметь базу данных, и вы можете использовать библиотеки HTTP (например, Retrofit - http://square.github.io/retrofit/) для получения данных с веб-сайтов (которые могут использовать HTTP). Но это пассивный - ваш клиент должен будет запрашивать данные, сервер не может «нажимать» на него данные.

Для данных «push» вы можете использовать Firebase (Google Cloud Messaging), который использует инфраструктуру Google и API, чтобы иметь (разумно) постоянное подключение к устройству для «push» уведомлений. Если вы будете следовать своим правилам, вы отправите небольшой пакет данных, который заставит вашего клиента разбудить и начнет делать конкретные HTTP-запросы на любой URL-адрес, который вам нравится.

2

Если ваш используете сервер локальной сети MYSQL в собственном устройстве, вы можете использовать команду MYSQL для подключения сервера

try 
    {   
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     String url = "jdbc:mysql://"+serverip+":"+serverport+"/"+dbName; 
     Connection conn = DriverManager.getConnection(url,username,password); 
     String queryString = "SELECT * FROM materialdb"; 
     PreparedStatement statement = conn.prepareStatement(queryString); 
     ResultSet rss = statement.executeQuery(queryString); 

     results = new ArrayList<FindDetails>(); 

     rss.beforeFirst(); 
      while(rss.next()) 
       {   
       FindDetails item_details = new FindDetails(); 
       item_details.setMaterial_Code_No(rss.getString("Material_Code_No")); 
       results.add(item_details);   
       }       
     rss.close(); 
     statement.close(); 
    } 
    catch(Exception e) 
    { 
     Toast.makeText(this, "Fail to get main list", Toast.LENGTH_LONG).show(); 
     e.printStackTrace(); 
    } 
} 

Если сервер находится на сети, тем лучше способ соединиться с сервером является PHP

Смежные вопросы