sql >> Database >  >> RDS >> Mysql

Kan een Android-app rechtstreeks verbinding maken met een online mysql-database?

Ja, dat kan.

Materialen die je nodig hebt:

  1. Webserver
  2. Een database opgeslagen op de webserver
  3. En een beetje Android-kennis :)
  4. Webservices (json ,Xml...etc) waar u zich prettig bij voelt

1. Stel eerst de internetrechten in uw manifestbestand in

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

2. Maak een klasse om een ​​HTTPRequest van de server te maken (ik gebruik json parisng om de waarden te krijgen)

voor bijv.:

    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 uw MainActivity Maak een object van de klasse JsonFunctions en geef de url door als argument waar u de gegevens vandaan wilt halen

bijv.:

JSONObject jsonobject;

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

4. En lees dan tenslotte de jsontags en sla de waarden op in een arraylist en toon het later in listview als je wilt

en als je een probleem hebt, kun je deze blog volgen, hij geeft uitstekende Android-tutorials AndroidHive

Aangezien het bovenstaande antwoord dat ik schreef lang geleden was en nu HttpClient , HttpPost ,HttpEntity zijn verwijderd in API 23. U kunt de onderstaande code gebruiken in de build.gradle(app-level) om nog steeds org.apache.http te blijven gebruiken in uw project.

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

of U kunt HttpURLConnection . gebruiken zoals hieronder om uw reactie van de server te krijgen

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;

}

of U kunt een bibliotheek van derden gebruiken, zoals Volley , Retrofit om de webservice-API aan te roepen en het antwoord te krijgen en het later te ontleden met behulp van FasterXML-jackson , google-gson .



  1. SQL Client voor Mac OS X die werkt met MS SQL Server

  2. Hoe gegevens te herstellen van een verwijderde Docker-container? Hoe kan ik het opnieuw verbinden met de gegevens?

  3. Teradata vullen met realistische testgegevens De Novo

  4. Hoe een Active Directory-gebruikersgroep toe te voegen als login in SQL Server