Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann sich eine Android-App direkt mit einer Online-Mysql-Datenbank verbinden?

Ja, das kannst du tun.

Benötigte Materialien:

  1. Webserver
  2. Eine auf dem Webserver gespeicherte Datenbank
  3. Und ein bisschen Android-Kenntnisse :)
  4. Webservices (json, XML...usw.), womit Sie vertraut sind

1. Legen Sie zuerst die Internetberechtigungen in Ihrer Manifestdatei fest

 <uses-permission android:name="android.permission.INTERNET" />

2. Erstellen Sie eine Klasse, um eine HTTPRequest vom Server zu erstellen (ich verwende json paring, um die Werte abzurufen)

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. In Ihrer MainActivity Erstellen Sie ein Objekt der Klasse JsonFunctions und übergeben Sie die URL als Argument, von der Sie die Daten erhalten möchten

zB:

JSONObject jsonobject;

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

4. Und dann endlich die jsontags lesen und die Werte in einer Arrayliste speichern und später in der Listenansicht anzeigen, wenn Sie möchten

und wenn Sie irgendwelche Probleme haben, können Sie diesem Blog folgen -php-mysql/">AndroidHive

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

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

oder Sie können HttpURLConnection verwenden wie unten, 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 verwenden , Retrofit um die Webservice-API aufzurufen und die Antwort zu erhalten und sie später mit FasterXML-jackson zu parsen , google-gson .