2016-09-15 9 views
-1

私はバックエンドデータベース(MySQL)を持つアンドロイドアプリを作っています。MySQL/PHP/JSON/Restful/Androidの関係を理解し​​ようとしています

私の研究から、MySQLデータベースに接続する方法の1つは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データベースと対話するための許容可能な方法ですか?これについて行くためのアドバイスはありますか?

+0

PHPは特に必要なものではなく、多くの人が何らかの目的で使うべきではないという貧弱な選択だと主張しています...しかし、あなたはそれを必要としますか、あるいはWeb対応のプログラミング言語やフレームワーク/ Express、OpenResty、Mojolicious、または無数に見えるものの1つ)を使用して、アプリケーションサーバーに電力を供給します。少なくとも、アプリケーションからの要求を調停して認証しますWeb上でそれらをdbに送信し、応答をシリアライズします。多数のセキュリティとスケーラビリティの問題を含む多くの理由により、アプリケーションがdbと直接通信することは望ましくありません。 –

答えて

0

このアプローチは、クライアントではなくウェブサーバーのように見えます(Androidクライアントははるかに少ない)。通常、サーバーにはデータベースがあり、クライアントはそのデータの「コンシューマー」です。しかし、クライアントは通常、そのデータを格納するデータベースも持っています。

PHPはサーバー側のテクノロジで、URLとHTTPを使用してデータの送受信を行うことができます。 PHPを使用してデータベースに接続し、リッチコンテンツをクライアントに提供することができます。

Androidでは、お使いの端末にはURLやウェブサイトがありません。データベースを持つことができ、HTTPライブラリを使用して(Retrofit-http://square.github.io/retrofit/など)、HTTPを使用する可能性のあるWebサイトからデータを取得できます。しかし、これはパッシブです - あなたのクライアントはデータを要求しなければなりません、サーバはそれにデータを "プッシュ"できません。

"プッシュ"データの場合、GoogleフレームワークとAPIを使用するFirebase(Googleクラウドメッセージング)を使用して、デバイスに(適度に)一定の接続を行い、通知をプッシュすることができます。彼らのルールに従えば、あなたのクライアントに目覚めさせ、あなたが好きなURLに特定のHTTP要求をするように指示する小さなデータパケットを送信します。

2

サーバーがWeb上にある場合は、あなたがあなた自身のデバイスでLAN 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(); 
    } 
} 

を接続するためにMYSQLコマンドを使用することができ、サーバーへの接続のより良い方法は、PHP

です
関連する問題