2012-07-20 156 views
0

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

这里我的代码

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" 
       + ");"; 
+0

为什么你关心自动递增键的值? – 2012-07-20 07:56:34

+0

,因为我在列表视图中显示它 – 2012-07-20 08:01:27

回答

1

您的代码不应该依赖于自动递增的键值。

为了向用户显示,在迭代数据库光标时使用单独的计数器。用户通常不需要知道密钥,只需要一个序列号。它们都可以不同。

但是,如果您坚持重新启动键值,请尝试删除表并重新创建它。但要小心在其他表中使用的旧键值作为外键。使用触发器来处理这种情况。

+0

谢谢你的工作 – 2012-07-20 08:11:24