2012-03-18 94 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