1

テーブルを埋める/更新する方法を探していSQLiteDatabaseます。場合によっては、(特定の戻り値によって) 通知を受ける必要があります。各行には、後でダウンロードする必要があるファイルの URL が含まれています。

  1. 行がまだ存在しません: 挿入して、この行をダウンロード用にリストする必要があることを通知してください。
  2. 行は存在しますが、挿入しようとしている行には、既にデータベースにある行と同じ値が含まれています。何もしないでください。これをダウンロードする必要があることを通知しません。
  3. 行は存在し、挿入しようとしている行には、既にデータベースにあるものとは異なる値が含まれています: この行を置き換えて、これをダウンロードする必要があることを通知してください。

私は答えを探していましたが、何か良いものを見つけることができないようです. insertWithOnConflict()replace()replaceOrThrow()、 ...を使用する必要があります

ありがとう!

4

2 に答える 2

2

単一の sqlite トランザクションにラップされた 2 つのステップで実行します。

  1. ROWID によるクエリ。行 ID がない場合、または結果が見つからない場合は、新しいものを挿入してダウンロードします。

  2. ステップ 1 で取得した新しい行と行の URL を比較します。URL が異なる場合のみ、行を更新してダウンロードします。それ以外の場合は何もしません。

于 2013-10-02T10:02:26.417 に答える
0

まず、カーソルを使用して DB に値が存在するかどうかをクエリし、null の場合は挿入を行います。それ以外の場合は、必要なフィールドが既にあるものと異なる場合は更新を行います。それ以外の場合は何もしない // 疑似コード

Cursor cursor=_db.query("TABLE", null, TABLEID + "=?", new String[]{id}, null, null, null);


        if(cursor.getCount()<1) // row Not Exist
        {
            cursor.close();

               ....assign values

               SQLiteDatabase _db.insert("TABLE_Name", null, Table_object);

               download ...ok

        }

        cursor.moveToFirst();

           if( cursor[field] != "same_value" ) {

           SQLiteDatabase _db.update("TABLE_Name", null, Table_object);

            download ...ok 

           }
于 2013-10-02T10:13:27.320 に答える