2016-04-19 48 views
-1

我想開發應用程序,其中我有phpMyAdmin服務器上的數據庫,我從解析json對象中獲取數據,當然不同的用戶有不同的數據和一些用戶共享相同的數據。問題是,當我從服務器獲取數據時,它有時會花費很長時間,如果我將它存儲在設備上,效率會更高,但有些用戶共享相同的數據(它們可以刪除和添加數據)。所以我的問題是 - 我怎樣才能將SQlite與myPHP結合起來,以便用戶在第一次登錄數據時將從服務器獲取數據,然後插入到設備數據庫中,並且下次用戶登錄數據時取自設備數據庫。如果他將進行更改,它將更新兩個數據庫在android中的數據存儲 - 結合SQlite與myPHP

+0

你在實現這個目標時面臨什麼問題? – Yashasvi

+0

我不知道這樣做..我已經看過並閱讀了很多有關這兩個數據庫的教程,但沒有結合它們。 – ATT

+0

我想你必須複製數據庫,而不是將它們合併。對?然後,當改變一個時,也改變另一個。 – Yashasvi

回答

0

您必須在服務器和客戶端都複製數據庫模式。

第一次從服務器獲取結果。並將其存儲在當地的sqilite中。然後,在SharedPreferences中存儲一個標誌,以便將來知道您必須從本地數據庫獲取結果。

之後,如果在本地數據庫中發生任何更改,您還必須在服務器上更新它。爲此,它取決於你的用例在服務器上更新的速度。

如果您不想立即使用,則可以等待並批量調用幾個電話,然後使用Job Scheduler API發佈到服務器。

如果您希望服務器上的更改儘快發生,請分離新線程並立即發佈。

0

可以這樣做到這一點..

對於不同類型的用戶,你應該根據用戶名或用戶ID的任何(由用戶在發送請求)和通用數據發送給所有用戶發送的數據。

現在來到你的主要問題..

在用戶第一次登錄請求你將發送所有相關的數據(在用戶ID /用戶名基地)從phpdatabase(從服務器)的用戶,並保存在Android中的所有數據設備。

和當用戶重新簽名在那段時間你會檢查,Android設備數據庫是空的(有數據)或沒有。如果android設備數據庫不是null,那麼你不會從phpdatabase爲用戶數據做一個新的請求。

現在,如果用戶將有任何更改像你說的用戶刪除的東西或更新的東西,那麼你已經從android設備到phpDatabase(服務器)的新請求刪除/添加/更新。首先你會在設備到服務器(phpdatabase)的請求中進行服務器端的更改,如果該服務/請求返回true,那麼您將在本地/設備數據庫更改/更新該數據。