重置Android SQLite中的自动增量

时间:2012-03-18 15:25:27

标签: android sqlite

我有这个方法会删除表中的所有行,但我也希望它重置自动增量,这样当添加新行时它将重新开始。由于某些列不存在,我正在使用的SQL语句无法正常工作。我做得对吗?

private void rmvAll() {

    SQLiteDatabase db = appts.getWritableDatabase();
    db.delete(TABLE_NAME, null, null);
    db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = " + TABLE_NAME);

}

4 个答案:

答案 0 :(得分:23)

你的表名需要单引号,即

db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + TABLE_NAME + "'");

答案 1 :(得分:3)

以dldnh的答案为基础:

以下查询会将seq设置为col表格中Tbl标识列中的最大值,因此不存在违反约束的风险。

UPDATE sqlite_sequence SET seq = (SELECT MAX(col) FROM Tbl) WHERE name="Tbl"

答案 2 :(得分:1)

我太努力了。

最后,我得到了这个答案代码......

Book.deleteAll(Book.class);
book=new Book(user, pass);
book.setId(Long.valueOf(book.listAll(Book.class).size()));
book.save();

此代码的工作方式如删除并重新创建table.and reset id。

祝你好运

答案 3 :(得分:0)

你也可以使用SQLiteDatabase的delete()方法,比如这个

db.delete("SQLITE_SEQUENCE","NAME = ?",new String[]{TABLE_NAME});