SQLiteOpenHelper を使用してテーブルを作成しました。作成したテーブルの画像を以下に示します
この後、テーブルから最初の行を削除すると、テーブルは次のようになります
ID が 2 で始まっていることがわかります。したがって、私の問題は、最初の行を削除すると、ID の最初の列が 2 になることです。この問題の解決を手伝ってください。こんな感じのテーブルが欲しい。
SQLiteOpenHelper を使用してテーブルを作成しました。作成したテーブルの画像を以下に示します
この後、テーブルから最初の行を削除すると、テーブルは次のようになります
ID が 2 で始まっていることがわかります。したがって、私の問題は、最初の行を削除すると、ID の最初の列が 2 になることです。この問題の解決を手伝ってください。こんな感じのテーブルが欲しい。
ID が 2 で始まることがわかります。したがって、私の問題は、最初の行を削除すると、ID の最初の列が 2 になることです。この問題の解決を手伝ってください。
id値は問題ありません。自動インクリメントを使用しているかどうかにかかわらず、これは正常な動作です。自動インクリメントの場合、内部反復子があり、「メモリ」がありません。
このシナリオを想像してみてください: ID 1、2 の 2 つの行があります。
最初の行を削除するとどうなりますか?
db では id 2 の 1 つの行が残りますが、次の行を挿入すると、この行は自動的に 3 の値 id を持ちます。1 番目の行を削除しても、2 番目の行の値は 1 に変更されません。
自動インクリメントを使用していない場合、これは可能です(プログラムでのみ作成します)が、このアプローチは効果的ではないと思います。たとえば、何百万ものレコードがある場合、すべての行の ID を変更する必要がありますか? これはヤバい。
したがって、これは実際には問題ではなく、通常の動作です。
あなたの問題はおそらく次のいずれかです:
IDフィールドは単にと呼ばれますがid
、Androidは従来の名前を使用します_id
(Java定数としてBaseColumns._ID
)。
IDフィールドはタイプである必要がありますINTEGER PRIMARY KEY