1

SQLiteOpenHelper を使用してテーブルを作成しました。作成したテーブルの画像を以下に示します

この後、テーブルから最初の行を削除すると、テーブルは次のようになりますここに画像の説明を入力

ID が 2 で始まっていることがわかります。したがって、私の問題は、最初の行を削除すると、ID の最初の列が 2 になることです。この問題の解決を手伝ってください。こんな感じのテーブルが欲しい。 ここに画像の説明を入力

4

2 に答える 2

1

ID が 2 で始まることがわかります。したがって、私の問題は、最初の行を削除すると、ID の最初の列が 2 になることです。この問題の解決を手伝ってください。

id値は問題ありません。自動インクリメントを使用しているかどうかにかかわらず、これは正常な動作です。自動インクリメントの場合、内部反復子があり、「メモリ」がありません。

このシナリオを想像してみてください: ID 1、2 の 2 つの行があります。

最初の行を削除するとどうなりますか?

db では id 2 の 1 つの行が残りますが、次の行を挿入すると、この行は自動的に 3 の値 id を持ちます。1 番目の行を削除しても、2 番目の行の値は 1 に変更されません。

自動インクリメントを使用していない場合、これは可能です(プログラムでのみ作成します)が、このアプローチは効果的ではないと思います。たとえば、何百万ものレコードがある場合、すべての行の ID を変更する必要がありますか? これはヤバい。

したがって、これは実際には問題ではなく、通常の動作です。

于 2013-03-12T10:31:03.780 に答える
0

あなたの問題はおそらく次のいずれかです:

  • IDフィールドは単にと呼ばれますがid、Androidは従来の名前を使用します_id(Java定数としてBaseColumns._ID)。

  • IDフィールドはタイプである必要がありますINTEGER PRIMARY KEY

于 2013-03-12T10:22:49.110 に答える