0

deleteAll() 関数について質問があります。データベースに autoincrement プロパティを持つキーを使用しています。データベースからすべての行を削除すると、すべてが削除されます。しかし、新しい行を挿入すると、キーは 1 から始まりません。たとえば、削除前のキーは 15 でしたが、削除後、新しいキーは 1 ではなく 16 になります。どうすればこれを修正できますか? 助言がありますか?

ここに私のコード

 public int deleteAll(){

 return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null);

 }

   public void onCreate(SQLiteDatabase db) {

  db.execSQL(SCRIPT_CREATE_DATABASE);

 }

そして私のデータベーススクリプト

private static final String SCRIPT_CREATE_DATABASE =

     "create table "
                + MYDATABASE_TABLE + "("
                + KEY_ID + " integer primary key autoincrement, " 
                + COLUMN_NAME + " text not null, " 
                + COLUMN_EMAIL + " text not null, "
                + COLUMN_PHONE + " text not null, "
                + COLUMN_ADDRESS + " text not null"
                + ");";
4

1 に答える 1

1

コードは、自動インクリメント キーの値に依存するべきではありません。

ユーザーに表示するには、データベース カーソルを反復処理するときに別のカウンターを使用します。通常、ユーザーはキーを知る必要はなく、シリアル番号だけを知る必要があります。どちらも異なる場合があります。

ただし、どうしてもキー値を再起動したい場合は、テーブルを削除して再作成してみてください。ただし、他のテーブルで外部キーとして使用されている古いキー値に注意してください。このようなケースを処理するには、トリガーを使用します。

于 2012-07-20T08:01:04.537 に答える