Kann eine Android-App direkt eine Verbindung zu einer Online-MySQL-database herstellen?

Android 3.3 API 18 

Hallo,

Ich entwickle meine erste App mit Android. Die App muss sich mit einer Online-database verbinden, um Benutzerdaten zu speichern.

Ich suche nach einem Cloud-Speicher mit einer MySQL-database. Kann sich meine App jedoch direkt mit dieser MySQL-database verbinden und Daten pushen und abrufen? Oder gibt es noch andere Dinge, die ich tun muss?

Vielen Dank für Anregungen,

Ja, das kannst du tun.

Benötigte Materialien:

  1. WebServer
  2. Eine auf dem Webserver gespeicherte database
  3. Und ein bisschen Android-Wissen 🙂
  4. Webservices (JSON, Xml … usw.), mit denen Sie sich wohl fühlen

1. Legen Sie zuerst die Internetberechtigungen in Ihrer Manifestdatei fest

   

2. Machen Sie eine class, um einen HTTPRequest vom Server zu machen (ich verwende json parisng, um die Werte zu erhalten)

für zB:

  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; } } 

3. MainActivity Sie in Ihrer MainActivity ein Objekt der class JsonFunctions und übergeben Sie die URL als Argument, von wo Sie die Daten JsonFunctions möchten

z.B:

 JSONObject jsonobject; 

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

4. Und dann lese endlich die jsontags und speichere die Werte in einer Arraylist und zeige sie später in listview, wenn du willst

und wenn Sie irgendein Problem haben, können Sie diesem Blog folgen, er gibt ausgezeichnete android Tutorials AndroidHive

Da die obige Antwort war lange zurück und jetzt HttpClient , HttpPost , HttpEntity wurden in Api 23 entfernt. Sie können den folgenden Code in der build.gradle (app-level) weiterhin verwenden org.apache.http in Ihrem Projekt.

 android { useLibrary 'org.apache.http.legacy' signingConfigs {} buildTypes {} } 

oder Sie können HttpURLConnection wie unten verwenden, um Ihre Antwort vom Server zu erhalten

 public String getJSON(String url, int timeout) { HttpURLConnection c = null; try { URL u = new URL(url); c = (HttpURLConnection) u.openConnection(); c.setRequestMethod("GET"); c.setRequestProperty("Content-length", "0"); c.setUseCaches(false); c.setAllowUserInteraction(false); c.setConnectTimeout(timeout); c.setReadTimeout(timeout); c.connect(); int status = c.getResponseCode(); switch (status) { case 200: case 201: BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream())); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb.append(line+"\n"); } br.close(); return sb.toString(); } } catch (MalformedURLException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } finally { if (c != null) { try { c.disconnect(); } catch (Exception ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } } return null; 

}

Oder Sie können eine Bibliothek von Drittanbietern wie Volley , Retrofit , um den Webservice API aufzurufen und die Antwort zu erhalten, und sie später mit FasterXML-jackson , google-gson .

Sie können PHP, JSP, ASP oder jedes andere serverseitige Skript verwenden, um eine Verbindung zur mysql-database herzustellen und JSON-Daten, die Sie in Ihrer Android-App parsen können, über diesen Link zurückzugeben

Was du machen willst, ist eine schlechte Idee. Sie müssten Ihren Benutzernamen und Ihr Passwort in die App einbetten. Dies ist eine sehr schlechte Idee, da es möglich sein könnte, Ihr APK zurück zu entwickeln und den Benutzernamen und das Passwort an diesen öffentlich zugänglichen MySQL-Server zu senden, der möglicherweise sensible Benutzerdaten enthält.

Ich würde vorschlagen, einen Webdienst zu machen, der als Proxy für den mysql Server dient. Ich nehme an, dass Benutzer angemeldet sein müssen, damit Sie ihren Benutzernamen / ihr Passwort verwenden können, um sich beim Webdienst zu authentifizieren.

Ja, Sie können sich definitiv mit der MySql Online-database verbinden, für die Sie einen Web-Service erstellen müssen. Dieser Webdienst bietet Ihnen Zugriff auf die MySql-database. Dann können Sie einfach Daten in MySql Database ziehen und schieben. PHP ist eine gute Option zum Erstellen von Web-Service ist einfach zu implementieren. Viel Glück…

Sie können auf jeden Fall eine solche Anwendung machen, müssen Sie http Verbindung zur database machen, indem Sie ein PHP-Skript aufrufen, das als Antwort bestimmte Abfragen nach Ihrem Projekt ausführen wird, und das Ergebnis in Form von XML oder JSON-Format generiert, whohc kann auf Ihrer Android-Anwendung angezeigt werden !. Für ein komplettes Tutorial, wie man Android-Anwendung mit MySQL verbindet, würde ich empfehlen, diese Tutoriala zu überprüfen

Schritt 1: Erstellen Sie einen Webdienst auf Ihrem Server

Schritt 2: Veranlassen Sie, dass Ihre Anwendung den Webdienst aufruft und Ergebnissätze empfängt

Schau dir dieses Online-Backend an.

Parse.com

Sie bieten Push-Benachrichtigungen, soziale Integration, Datenspeicherung und die Möglichkeit, dem Backend Ihrer App mit Cloud Code reichhaltige benutzerdefinierte Logik hinzuzufügen.

Es ist eigentlich sehr einfach. Aber Sie können es nicht direkt erreichen. Sie müssen eine Serviceseite-Technologie auswählen. Sie können alles für diesen Teil verwenden. Und das nennen wir eine RESTful API oder eine SOAP API. Es hängt von Ihnen ab, was Sie auswählen sollen. Ich habe viele Projekte mit beiden gemacht. Ich würde REST bevorzugen. Also, was passieren wird, haben Sie einige Skripte in Ihrem Webserver, und Sie kennen die URLs. Zum Beispiel müssen wir eine Benutzerregistrierung vornehmen. Und dafür haben wir

mydomain.com/v1/userregister.php

Jetzt von der Android-Seite senden Sie eine HTTP-Anfrage an die obige URL. Und die obige URL behandelt die Benutzerregistrierung und gibt Ihnen eine Antwort, ob die Operation erfolgreich ist oder nicht.

Für eine vollständige detaillierte Erklärung des obigen Konzepts. Sie können den folgenden Link besuchen.

** Android MySQL Tutorial zur Durchführung der CRUD-Operation **