我对deleteAll()函数有疑问。我正在为我的数据库使用具有autoincrement属性的键。当我从数据库中删除所有行时,它会删除所有内容。但是当我插入一个新行时,键不会从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"
+ ");";
答案 0 :(得分:1)
您的代码不应该依赖于自动递增密钥的值。
为了向用户显示,在迭代数据库游标时使用单独的计数器。用户通常不需要知道密钥,只需知道序列号。两者都可以不同。
但是如果你坚持重新启动键值,请尝试删除表并重新创建它。但要注意其他表中使用的旧键值作为外键。使用触发器来处理这种情况。