Mysql
 sql >> база данни >  >> RDS >> Mysql

Може ли приложение за Android да се свърже директно с онлайн база данни на mysql

Да, можете да го направите.

Необходими материали:

  1. Уеб сървър
  2. База данни, съхранявана в уеб сървъра
  3. И малко познания за android :)
  4. Уеб услуги (json, Xml... и т.н.) каквото ви харесва

1. Първо задайте разрешенията за интернет във вашия файл с манифест

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

2. Направете клас, за да направите HTTPRequest от сървъра (използвам json parisng, за да получа стойностите)

например:

    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 Направете обект от класа JsonFunctions и предайте URL адреса като аргумент, откъдето искате да получите данните

напр.:

JSONObject jsonobject;

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

4. И след това накрая прочетете jsontags и съхранете стойностите в списък с масиви и по-късно го покажете в listview, ако искате

и ако имате някакъв проблем, можете да следвате този блог, той дава отлични уроци за android AndroidHive

Тъй като горният отговор, който написах, беше отдавна и сега HttpClient , HttpPost ,HttpEntity са премахнати в Api 23. Можете да използвате кода по-долу в build.gradle(app-level), за да продължите да използвате org.apache.http във вашия проект.

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

или Можете да използвате HttpURLConnection като по-долу, за да получите отговора си от сървъра

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;

}

или Можете да използвате библиотека на трета страна като Volley , Retrofit да извикате API на уеб услугата и да получите отговора и по-късно да го анализирате с помощта на FasterXML-jackson , google-gson .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Балансиране на натоварването, съобразено с базата данни:Как да мигрираме от HAProxy към ProxySQL

  2. mysql, итерирайте през имената на колони

  3. Как работи функцията LPAD() в MySQL

  4. MySQL 8.0 - Клиентът не поддържа протокол за удостоверяване, поискан от сървъра; помислете за надграждане на MySQL клиента

  5. MySQL:Как да копирам редове, но да променям няколко полета?