2012-03-18 18 views
9

私はテーブルからすべての行を削除するこのメソッドを持っていますが、新しい行が追加されたときに再び開始されるようにautoincrementをリセットする必要があります。私が使用している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

あなたは、あなたのテーブル名の前後dldnhの答えにすなわち

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

ビル単一引用符が必要になります:次のクエリは、col ID列内の最大値にseqを設定します

Tblテーブルでは、制約に違反する危険はありません。

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

あなたもこの

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

ように私はあまりにもハードしようとしていた、SQLiteDatabaseの()メソッドを削除することができます。

最後に、私はこの回答コード...削除と再作成table.andリセットIDなどの

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

このコードの仕事を得ました。

幸運

+0

重要:アンドロイドスタジオの仕事では、インスタント実行を無効にする必要があります –

関連する問題