我有这个方法会删除表中的所有行,但我也希望它重置自动增量,这样当添加新行时它将重新开始。由于某些列不存在,我正在使用的SQL语句无法正常工作。我做得对吗?
private void rmvAll() {
SQLiteDatabase db = appts.getWritableDatabase();
db.delete(TABLE_NAME, null, null);
db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = " + TABLE_NAME);
}
答案 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});