2011-09-15 15 views
3

私のAndroidアプリケーションデータベースは、Webサーバー上の中央データベースと同期します。私の問題は効率的に同期しています。AndroidデータベースとWebデータベースを効率的に同期する方法

テーブルは "id"(プライマリキー) "town"として設定されています。

私の現在のプロセスは、与えられた町の人々のすべてのIDでAndroidアプリが欲しい:

ボトルネックがある追加/更新プロセスで来る
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

をCURRENTTIMEするデバイスDB更新、最終更新日に/更新を挿入しないが同期は、両方の側で行われますか? –

+0

いいえ、Androidデータベースはウェブデータベースのデータを使用して同期されています – Dre

答えて

2

はその後、同期の時に、あなたは、Androidデバイス内のすべてのデータを削除し、サーバ

から最新のデータを追加傾けることが柔軟になるので、私はこれを言っていますUPDATE/INSER上、は、まずサーバ側で

+0

挿入には挿入よりも時間がかかります。あなたが頻繁に同期している場合、これは良くありません。 – superM

+0

WRTの今後の校正では、名前や住所などのデータを追加すると、それも再ダウンロードする必要があります。 – Dre

+0

ya、それはデータを更新することがより望ましいです、あなたはあなたがこのデータがあなたのデバイスで更新されているかどうかをあなたに言うだろう追加フィールド(isSyncブール値)を取ることができますonethgを行うことができますか? –

0
  1. ビルドテーブルをすべて削除し、すべての(最新のもの)を挿入(ID、町、UpdateTime)
  2. 追加triger Tは、FXのSharedPreferences IDと
  3. サーバに最終更新日を送っ
  4. ビルドJSONまたはXMLをデバイス上UpdateTime
  5. 店最終更新時間を変更するには、タウンテーブルからWHERE UpdateTime>最終更新日+(CurrentTimeを(JSONまたはXMLで場所) DBからGETDATE() )
+0

しかし、誰かが町を "A"から "B"に変更した場合、その詳細は街 "A"と同期するデバイスに残されます。したがって、 "現在の" "古い"アプローチ – Dre

+0

です。 ..まあそのより複雑な... Uは、マイクロソフトの同期フレームワークのようなzmthを見つけようとしました – Selvin

+0

2つの方法? Androidアプリはデータを変更しませんが、データはウェブデータベースで変更できます – Dre

関連する問題