2011-09-15 70 views
3

我的android應用程序數據庫與我的Web服務器上的中央數據庫同步。我的問題是有效地同步它。如何有效地將Android數據庫與網絡數據庫同步

該表設置爲「id」(主鍵)「town」。 Android應用程序希望人們在給定鎮的所有ID

我現在的流程是:

get list of all ids for town "A" 
set all existing records in Android database to "old" 
add/update ids in the list to "current" 
delete any records still set as "old" 

的瓶頸來自於添加/更新過程是:

for each id { 
    result = update WHERE _id = id 
    if (result == 0) { 
     add record 
    } 
} 

是否有像WHERE _id IN(id1,id2,id3,id4 ....)這樣的語句,如果已經存在,它將作爲添加/更新? 或者我是否完全錯誤?

感謝

+0

是同步完成的兩側? –

+0

不,使用來自Web數據庫的數據同步Android數據庫 – Dre

回答

2

那麼爲什麼你更新數據,在同步的時候着你刪除Android設備中的所有數據,並從服務器

添加的最新數據我這樣說,因爲這將靈活,首先刪除所有與插入所有(最新的)

+0

插入始終比插入需要更多的時間。如果你經常同步,這是不好的。 – superM

+0

WRT將來打樣,當我添加更多的數據,如名稱,地址等,將不得不重新下載。 – Dre

+0

雅,那麼它更新數據是更可取的,你可以做onethg你可以採取一個額外的領域(isSync作爲布爾)它會告訴你這個數據是否已經在你的設備上更新? –

0
  1. 建一個表在服務器端(ID,鎮,錄入)
  2. 附加在UPDATE/INSER TRIGER t若要修改註冊
  3. 商店LASTUPDATE時間上設備與FX SharedPreferences
  4. 發送LASTUPDATE到服務器
  5. 構建JSON或XML用ID,鎮從表WHERE註冊> LASTUPDATE +(發生在JSON或XML)(currentTime的GETDATE(從DB) )
  6. 不要插入/器件DB更新的更新,LASTUPDATE到CURRENTTIME
+0

但是如果有人將他們的城鎮從「A」改爲「B」,他們的細節將留在與城鎮「A」同步的設備上,因此「當前」「舊」方法 – Dre

+0

因此它應該是2路同步。嗯,它更復雜... U謝謝嘗試找到zmth喜歡微軟同步框架 – Selvin

+0

兩種方式? Android應用程序不會更改數據,但可以在Web數據庫中更改數據 – Dre

相關問題