2017-03-12 61 views
-1

在我的Android的項目,我需要檢索從MySQL通過PHP的一些數據..我不知道是否有比這更好的辦法,這是我的代碼:這是更好的方式連接到Android的MySQL數據庫?

public class test extends AppCompatActivity { 

TextView text; 

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.test_activity); 

    text = (TextView) findViewById(R.id.Name); 

    AsyncTaskClass asyncTaskClass = new AsyncTaskClass(); 
    asyncTaskClass.execute(); 

} 

private class AsyncTaskClass extends AsyncTask<String, Void, String> { 

    @Override 
    protected String doInBackground(String... strings) { 
     String getNameURL = "http://10.0.2.2/getName.php"; 
     try { 

      URL url = new URL(getNameURL); 
      HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 

      try { 

       httpURLConnection.setRequestMethod("GET"); 
       httpURLConnection.setDoOutput(true); 
       httpURLConnection.setDoInput(true); 

       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "iso-8859-1")); 
       StringBuilder result = new StringBuilder(); 
       String line = ""; 

       while ((line = bufferedReader.readLine()) != null) { 
        result.append(line).append("\n"); 
       } 

       bufferedReader.close(); 

       JSONObject jsonObject = new JSONObject(result.toString()); 
       return jsonObject.getString("Name"); 

      } finally { 
       httpURLConnection.disconnect(); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     if (result != null) { 
      text.setText("Your name is " + result); 
     } 
    } 
}} 

有沒有錯碼。

但是請注意,在每一個活動中,如果它需要獲取一些數據,我會在其中放置一個AsyncTask ..我沒有太多的android和java經驗。 是我的HTTP連接有問題,因爲我看到一些使用HTTPClient和URI而不是URL的例子! setRequset方法GET和POST有什麼不同?

在此先感謝我欣賞任何幫助:)!

+2

你沒有連接到任何MySQL數據庫在此代碼其他HTTP庫。您正在對一些PHP腳本執行常規HTTP請求。 –

+0

創建將執行HTTP請求,讓您用自己的聽衆的幫助下,響應我猜 –

+0

一個更好的辦法是徹底的一個實際的HTTP庫擺脫的AsyncTask的...排球,改造,離子共同類, AsyncHttpClient等... –

回答

0

我會建議一個網絡庫,如Android Volley。 (還有其他一些像Retrofit和OkHttp2)

通過使用網絡庫,它使得它更容易重複使用和讀取代碼以及許多其他許可,例如不必使用一個AsyncTask。

此行添加到您的項目依賴於庫中導入到項目

dependencies { 
    ... 
    compile 'com.mcxiaoke.volley:library:1.0.0' 
} 

有許多在線資源,可以告訴你如何使用這個庫,如果谷歌像「我提到的其他示例android volley請求。「

0

但請注意,在每一個活動,我把一個的AsyncTask裏面它,如果它需要得到一些數據

所以呢?沒有錯。您可以選擇更好地組織代碼,這樣您就不會一次又一次複製粘貼所有內容。

是我的HTTP連接有什麼不對,因爲我看到使用URL

阿帕奇了HTTPClient現在在Android過時的了HTTPClient和URI,而不是一些例子。

是什麼setRequsetmethod之間的不同GET和POST

無關與Android ...你想要得到的數據或 「發送」 的數據?就像從數據庫讀取數據或插入數據庫一樣?

代碼沒有問題。

好的,太棒了!但是,你可能要考慮在Android

Comparison of Android networking libraries: OkHTTP, Retrofit, and Volley