Mysql
 sql >> Base de données >  >> RDS >> Mysql

Une application Android peut-elle se connecter directement à une base de données mysql en ligne

Oui, vous pouvez le faire.

Matériel dont vous avez besoin :

  1. Serveur Web
  2. Une base de données stockée sur le serveur Web
  3. Et un peu de connaissances sur Android :)
  4. Webservices (json ,Xml...etc) avec ce que vous êtes à l'aise

1. Définissez d'abord les autorisations Internet dans votre fichier manifeste

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

2. Créez une classe pour créer une HTTPRequest à partir du serveur (j'utilise json parisng pour obtenir les valeurs)

par exemple :

    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. Dans votre MainActivity Faire un objet de la classe JsonFunctions et passez l'url comme argument d'où vous voulez obtenir les données

ex :

JSONObject jsonobject;

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

4. Et enfin, lisez les jsontags et stockez les valeurs dans une liste de tableaux et affichez-les plus tard dans la liste si vous le souhaitez

et si vous avez un problème, vous pouvez suivre ce blog, il donne d'excellents tutoriels Android AndroidHive

Étant donné que la réponse ci-dessus que j'ai écrite remonte à longtemps et maintenant HttpClient , HttpPost ,HttpEntity ont été supprimés dans l'API 23. Vous pouvez utiliser le code ci-dessous dans le build.gradle (au niveau de l'application) pour continuer à utiliser org.apache.http dans votre projet.

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

ou Vous pouvez utiliser HttpURLConnection comme ci-dessous pour obtenir votre réponse du serveur

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;

}

ou Vous pouvez utiliser une bibliothèque tierce comme Volley , Retrofit pour appeler l'API du service Web et obtenir la réponse, puis l'analyser en utilisant FasterXML-jackson , google-gson .