我正在開發一所大學的課程選擇應用程序。學生必須註冊申請。我通過使用db helper使用SQLlite,我的表包含studentID,密碼,名稱等。SQLite在多個設備上註冊 - Android
我的問題是此sqlite數據庫僅停留在本地嗎?我的意思是,我怎樣才能達到多個設備上的學生表,同時讀寫。當它穿上玩具店時,千名學生將使用它。
我應該使用哪些技術,我應該在哪裏放置db? 我真的很困惑,感謝提前。
我正在開發一所大學的課程選擇應用程序。學生必須註冊申請。我通過使用db helper使用SQLlite,我的表包含studentID,密碼,名稱等。SQLite在多個設備上註冊 - Android
我的問題是此sqlite數據庫僅停留在本地嗎?我的意思是,我怎樣才能達到多個設備上的學生表,同時讀寫。當它穿上玩具店時,千名學生將使用它。
我應該使用哪些技術,我應該在哪裏放置db? 我真的很困惑,感謝提前。
通過sqlite
這是不可能的。您必須在server
上創建數據庫。對於那件事,你可以使用mysql
,oracle
等。所以從服務器n
學生可以訪問數據。
有很多時候,當你的Android應用程序需要從互聯網獲取數據,爲用戶提供新的信息和/或數據。您的應用可以通過不同的方式實現此目的。您可以設置自己的web
service/API
,或者您可以從已有的service/API
中提取。
1)
從API
獲取數據幸運的是,這裏有一個類,叫做AsyncTask
。從Android documentation
,AsyncTask通過允許執行後臺操作,並在UI線程上發佈結果而無需操縱線程和處理程序,從而促進了UI thread
的正確和簡便的使用。簡而言之,AsyncTask
可爲您處理所有複雜問題。
2)
要使用的AsyncTask
功能,必須繼承它,並提供3種泛型類型,稱爲Params
,Progress
和Result
。參數是指將分析到您的任務的參數,Progress
指的是進度指示器/計數器類型,結果是完成任務時將返回的結果。 AsyncTask有4個重要的方法,onPreExecute
(昂貴的任務開始之前應該做什麼),doInBackground
(實際的昂貴的操作進入這裏),onProgressUpdate
(做什麼來顯示進度)和onPostExecute
(任務完成時該怎麼辦)。
class RetrieveFeedTask extends AsyncTask<Void, Void, String> {
private Exception exception;
protected void onPreExecute() {
progressBar.setVisibility(View.VISIBLE);
responseView.setText("");
}
protected String doInBackground(Void... urls) {
String email = emailText.getText().toString();
// Do some validation here
try {
URL url = new URL(API_URL + "email=" + email + "&apiKey=" + API_KEY);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
bufferedReader.close();
return stringBuilder.toString();
}
finally{
urlConnection.disconnect();
}
}
catch(Exception e) {
Log.e("ERROR", e.getMessage(), e);
return null;
}
}
protected void onPostExecute(String response) {
if(response == null) {
response = "THERE WAS AN ERROR";
}
progressBar.setVisibility(View.GONE);
Log.i("INFO", response);
responseView.setText(response);
}
}
Read
本教程中使用此功能:http://www.androidauthority.com/use-remote-web-api-within-android-app-617869/
另請參閱該文檔:http://developer.android.com/reference/android/os/AsyncTask.html
非常感謝! – asyaben
是SQLite是本地數據庫。如果你想爲所有用戶使用一個公共數據庫,例如使用mysql數據庫。 – xNeyte
SQLite無法訪問其他設備 –