0

我对 deleteAll() 函数有疑问。我正在为我的数据库使用具有自动增量属性的键。当我从数据库中删除所有行时,它会删除所有内容。但是当我插入一个新行时,键不是从 1 开始的,例如在删除键为 15 之前,删除后新键变为 16 而不是 1。我怎样才能解决这个问题?有什么建议么?

这是我的代码

 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 回答