2014-01-28 58 views
1

我有兩個關於Android和PHP/MySQL之間的連接的問題。如何將我的Android應用程序連接到我的PHP/MySQL後端?

  1. 如果我使用版本3和以上是真的,我需要在後臺使用單獨的線程做連接?

  2. 是否有必要使用JSON來找回答案?

我編寫的代碼沒有使用多線程和JSON,但它只適用於2.3及以上版本。我嘗試了4.0和4.2,但沒有回覆任何迴應。

+2

android無法與mysql通話,而且您也不希望它 - 您的數據庫永遠不會直接暴露於公共網絡。 android應該與PHP交談,並且php會與mysql交談。 –

+0

yess我知道,但使用線程和json類怎麼樣? – user3006788

+0

是的,你必須使用AsyncTask(線程),否則你會得到一個NetworkOnMainThreadException。看看那裏有很多東西 –

回答

6

你的第一個問題:

是。 總是做網絡任務或任何其他需要時間的背景。最好的方法是使用AsyncTaskThis article解釋AsyncTask比我更好的方式,去閱讀它。

與您的問題的評論相反,您應該使用單獨線索的原因不是因爲您會在其他情況下獲得NetworkOnMainThreadException。這是因爲這是一個更好的做法,因爲它可以確保您的應用在執行網絡任務時不會出現口吃。主要任務還處理您的Activity中的動畫等,因此在主線程上執行任何X時間任務,意味着應用程序會在X時間內停頓。

你的第二個問題:

不,這是沒有必要使用JSON。您確實希望通過網頁上的腳本來路由您的請求(無論是PHP,Ruby,Python等),而不是直接與數據庫進行交互。這樣,您就可以限制應用程序能夠執行的操作,以及潛在黑客能夠執行的操作。

就像我說的,沒有必要使用JSON。但是,由於幾個原因,它是從服務器獲取信息到應用程序的最廣泛接受的方式。最常見的2福利:

  1. 低開銷:JSON使用你的數據之間的非常少「額外」的角色,而不是,例如,XML,這早已標籤,等等;
  2. 易用性:Android內置了JSON工具供您使用,這使您可以輕鬆使用JSON。例如,藉此位JSON的:

[{'id':11,'name':'Bob'},{'id':42,'name':'Sally'}]

要在Android應用解析這個,你可以這樣做:

public List<Person> parseJson(String jsonString) { 

    // Initialize the ArrayList we're gonna store the people in 
    List<Person> people = new ArrayList<Person>(); 

    try { 
     // Convert the JSON from text (String) to a JSON Array, so we can 
     // more easily traverse it 
     JSONArray rootArray = new JSONArray(jsonString); 

     // loop through the prople in the JSON Array 
     for(int i=0; i<rootArray.length(); 

      // Get the object at position i from the JSON Array 
      JSONObject workingObj = rootArray.get(i); 

      // Do what you have to to store the data. In this example, 
      // I'm using a class called 'Person' which has setters for Id and Name 
      Person p = new Person(); 

      // Get all the info you need from the JSON Object. As you can see 
      // in the JSON snippet, we have an integer with key 'id' and a 
      // string with key 'name' 
      p.setId(workingObj.getInt("id")); 
      p.setName(workingObj.getString("name")); 

      // add the Person p to the ArrayList 
      people.add(p); 
     } 
    } catch (JSONException e) { 
     // properly handle all exceptions! 
    } 
    return people; 
} 

正如你可以看到,所有的解析爲您完成,你只需要適應數據結構。

相關問題