2016-03-27 13 views
1

Ich habe eine phpmyadmin Setup mit Dream-Host. Sagen wir zum Beispiel, ich wollte Benutzernamen und Passwörter aus der Datenbank von Android abrufen, wie würde ich das tun? Um auf meine Datenbank zugreifen zu können, benötige ich den Benutzernamen und das Passwort für die Datenbank. Wie kann ich also über Android eine Verbindung herstellen, ohne dass die Benutzer den Quellcode meiner App sehen und die Anmeldeinformationen der Datenbank sehen können?Wie man android zu Mysql Datenbank sicher verbindet

EDIT: Ein großes Missverständnis, das ich habe, ist, wo ich die PHP-Webservice-Datei speichern? Nicht auf dem Gerät, oder?

Antwort

1

Sie können eine direkte Verbindung zu MySQL herstellen, dies ist jedoch keine bewährte Methode, insbesondere für Produktionsanwendungen. Mein Rat ist, einen Webdienst zu verwenden, der die Verbindung erleichtert.

Webdienste sind Dienste, die vom Web-Server eines Unternehmens für Webbenutzer oder andere mit dem Internet verbundene Programme bereitgestellt werden, in diesem Fall Ihre Android-App.

ist hier ein großes Tutorial auf den Server zu erhalten begonnen Android, MySQL and PHP

+0

Sie auf jeden Fall direkt über JDBC MySQL verbinden kann finden, obwohl es viele Probleme mit verschiedenen Versionen sind. Aber es ist möglich. – Wukash

+0

Möglich, aber keine gute Praxis, speziell für Produktions-Apps. Ich werde meine Antwort aktualisieren. – Nick

+0

Ich bin neu in der Web/Android-Entwicklung. Ich habe das Tutorial durchgesehen und verstehe die Web-Service-Sache immer noch nicht. Ist die PHP-Datei der Webservice? Ich bin auch immer noch verwirrt darüber, wo ich die Datenbank Anmeldeinformationen speichern, um Informationen aus ihm zu ziehen – Wyatt

-1

eine Klasse Stellen auf eine HTTP-Anforderung zu machen. Zum Beispiel (ich benutze JSON Parsen die Werte zu erhalten):

public class JSONfunctions { 
     public static JSONObject getJSONfromURL(String url) { 
     InputStream is = null; 
     String result = ""; 
     JSONObject jArray = null; 

     // Download JSON data from URL 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost(url); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 

     } catch (Exception e) { 
      Log.e("log_tag", "Error in http connection " + e.toString()); 
     } 

     // Convert response to string 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      result = sb.toString(); 
     } catch (Exception e) { 
      Log.e("log_tag", "Error converting result " + e.toString()); 
     } 

     try { 
      jArray = new JSONObject(result); 
     } catch (JSONException e) { 
      Log.e("log_tag", "Error parsing data " + e.toString()); 
     } 

     return jArray; 
     } 
    } 

In Ihrem MainActivity, ein Objekt mit der Klasse JsonFunctions machen und die URL übergibt, von wo aus Sie die Daten als Argument erhalten mögen. Zum Beispiel:

JSONObject jsonobject; 
jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL"); 

Und dann endlich lesen Sie die JSON-Tags und speichern Sie die Werte in einer ArrayList. Zeigen Sie sie später in einem ListView, wenn Sie möchten.

Sie könnten eine Antwort hier Can an Android App connect directly to an online mysql database

+1

Eine http-Verbindung? "Ja wirklich?" Kannst du nicht etwas Sichereres finden? Wie https? – Tom

+0

zuerst lassen Sie ihn http versuchen, dann kann er auf https verschieben – srccode

+0

dann lasse ich Sie Ihre Antwort zu betonen, wie unsicher es ist, http in diesem Kontext zu verwenden **, weil jeder im Netzwerk sein Datenbank-Passwort ** gestohlen haben kann. – Tom

Verwandte Themen