sql >> Database teknologi >  >> RDS >> Mysql

Kan en Android-app oprette forbindelse direkte til en online mysql-database

Ja, det kan du gøre.

Materialer du skal bruge:

  1. Webserver
  2. En database gemt på webserveren
  3. Og en lille smule android viden :)
  4. Webtjenester (json ,Xml...osv), hvad end du er fortrolig med

1. Indstil først internettilladelserne i din manifestfil

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

2. Lav en klasse for at lave en HTTPRequest fra serveren (jeg bruger json parisng til at hente værdierne)

f.eks.:

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. I din MainActivity Lav et objekt af klassen JsonFunctions og send url'en som et argument, hvorfra du vil hente dataene

f.eks.:

JSONObject jsonobject;
 

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

4. Og læs endelig jsontags og gem værdierne i en arraylist og vis den senere i listview, hvis du vil

og hvis du har et problem, kan du følge denne blog, han giver fremragende android tutorials AndroidHive

Siden ovenstående svar, jeg skrev, var længe tilbage og nu HttpClient , HttpPost ,HttpEntity er blevet fjernet i Api 23. Du kan bruge nedenstående kode i build.gradle(app-level) for stadig at fortsætte med at bruge org.apache.http i dit projekt.

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

eller Du kan bruge HttpURLConnection like nedenfor for at få dit svar fra serveren

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;
 

}

eller Du kan bruge 3. parts bibliotek som Volley , Retrofit at kalde webservice-api'et og få svaret og senere parse det med FasterXML-jackson , google-gson .



  1. Sådan genereres et entity-relationship (ER) diagram ved hjælp af Oracle SQL Developer

  2. At få id'et for en række, jeg opdaterede i SQL Server

  3. Sådan får du den sidste dag i måneden i Oracle

  4. Hvad er en tidsseriedatabase?