0

データをダウンロードして解析し、S​​QLite データベースに保存する必要があるアプリを作成しています。ただし、アプリが起動されるたびに downloadtask (asynctask) が実行され、重複データがデータベースに追加され続けるため、同じデータの複数のインスタンスが取得されるという問題があります。

データベースに値がある場合にのみダウンロードタスクを実行したいのですが、サーバー上のデータファイルが更新された場合でもダウンロードタスクを実行できるようにしたいです。

テーブル内の行数が 0 より大きいかどうかを確認する以外に、どうすればこれを行うことができますか? 何を検索すればよいかよくわかりません。どんな助けでも大歓迎です!

4

2 に答える 2

1

各リーチには一意の ID が必要です。
データをロードするときに、一意の ID がデータベースにあるかどうかを確認します
。存在する場合は、行を更新します。
存在しない場合は追加します(追加)。
Web サイトでデータベースを管理している場合は、データベースが更新されるたびに更新するフラグをそこに置くことができます。したがって、データを読み取る前に、フラグを確認してください。更新された場合、新しいデータをロードし、新しいデータをデータベースに追加します。

于 2012-12-10T01:22:12.443 に答える
0

アプリのローカル部分の場合: このデータベースのクエリが複数の行を返す場合、必要に応じてデータを簡単に更新できます。これは、カーソルを使用してクエリの実行後にそのカウントを取得するのは非常に簡単です。重複したくない場合は、ダウンロード タスクがリモート ソースからデータを取得したことを確認した後、データベースを削除してください。そうすれば、重複がなくなり、何か問題が発生した場合に誤ってデータベースを削除することがなくなります。

リモート ソースの場合: プッシュ通知を有効にして、データベースで何かが変更された後に通知を送信できます。したがって、通知を送信することで、新しいデータをダウンロードして適切に解析するサービスをトリガーできます。

于 2012-12-10T01:21:56.870 に答える