1

データベースのテーブルを更新する際に奇妙な問題があります...うまく説明できなくてもすみませんが、少し混乱しています...問題は次のとおりです:値を含むテーブルを作成しました。私のリストビュー..すべてが今のところ機能します..値の挿入と削除は問題なく機能します..サービスにループが作成されましたなぜデータベースの値と文字列を比較する必要があるのですか?この比較が真の場合、テーブルの値を変更する必要があります..

本当の問題はこれです:私db.updateは使用しない場合にのみ機能します...決して、コマンドdb.delete...使用すると、db.updateもう機能しません..そしてそれを再び機能させるには、新しいAVDを作成する必要があります。

どのように可能ですか?私db.deleteとIDはこれです:

item.getMenuInfo();
    id = getListAdapter().getItemId(info.position);

public void deleteReg(SQLiteDatabase db ,long id) 
        {
           db.delete(TabRegistry.TABLE_NAME, TabRegistry._ID + "=" + id, null);
        }

活動について:

 databaseHelper.deleteReg(db, id);

私のdb.updateはこれです:(位置はgetPositions()、カーソルで位置を見つけるための値です(db.updateが失敗した場合でも、常に機能します))

public void updateReg(SQLiteDatabase db,int positions, String stat)
    {
        ContentValues v = new ContentValues();
        v.put(TabRegistry.STATUS, stat);
        db.update(TabRegistry.TABLE_NAME, v, TabRegistry._ID + " = " + positions, null);
    }

サービス中:

   databaseHelper.updateReg(db, positions, "SUCCESS");

さらにコードが必要な場合は、今追加したものを教えてください..事前に感謝します

4

1 に答える 1

2

使用しているSQLiteAPIは、 CRUD操作に基づいています(これを読む必要があります)。

データベースからレコードを削除しているため、レコードを更新しようとしても更新するものはありません。新しいレコードを作成する場合、または削除したレコードを再作成する場合は、UPDATEの代わりにINSERTを実行します。

編集:

また、更新と削除にポジション番号を渡しているようです。この値を使用してレコードをテーブルに配置していると思いますか?テーブルとデータベースからレコードを削除したときに、他のレコードも更新されていないために無効な位置になっている可能性はありますか?それは暗闇の中でのショットです、私が尋ねたほうがいいと思いました。

于 2012-04-26T01:19:49.873 に答える