ID、チャンネル、名前の列を使用してアプリ用に Android でデータベースを作成しました。名前は問題なく作成でき、すべてが機能します。私の ID は、そのチャネルに固有のコマンドに関連付けられています。15 のチャンネルがあり、チャンネル 4 を削除しようとすると、最初にチャンネル 4 を置き換えるのではなく、チャンネル 16 が作成されます。
値を追加する前に最初に「空の」RowIds を検索する方法はありますか?
ID 列が自動インクリメントの場合、4 を置き換えることはできません。列の値は、挿入ごとに 1 ずつ進みます。
自動インクリメントを削除して、自分でIDを処理できます。ただし、そのためには、各挿入で欠落している番号を検索する必要があります (あまり効率的ではありません)。削除された ID を補助テーブルに保存することもできます。これにより、ルックアップを回避できます。しかし、それが価値があるかどうかはわかりません...
挿入で一意制約違反が発生した場合、行が更新されます。したがって、例の ID 列には、行を更新するためのデータベース スキーマに PRIMARY KEY 制約が必要です。
contentValue c;
SQLiteDatabase db=getWritableDatabase();
db.replace("table_name", null, c);