2012-03-18 71 views
9

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

private void rmvAll() { 

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

} 

回答

19

你需要在你的表名的单引号,即

db.execSQL("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + TABLE_NAME + "'"); 
3
上dldnh的回答

大厦:

下面的查询将设置seq的最大价值在col标识列在Tbl表中,所以不存在违反约束的风险。

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

你也可以使用删除SQLiteDatabase()方法,这样

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

我试图太硬。

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

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

此代码的工作如删除并重新创建table.and复位ID。

祝你好运

+0

重要的:在工作糖orm android工作室必须禁用即时运行 – 2017-06-22 17:10:38