Сброс автоинкремента в Android SQLite

У меня есть этот метод, который удалит все строки из таблицы, но я также хочу, чтобы он был reset автоинкремент, чтобы при добавлении новой строки он снова запустится. Оператор 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 ответа

вам понадобятся одинарные кавычки вокруг имени вашей таблицы, т.е.

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


Основываясь на ответе dldnh:

Следующий запрос установит seq наибольшее значение в столбце идентификации col в таблице Tbl, поэтому нет риска нарушения ограничений.

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


Я слишком старался.

Наконец, я получил этот код ответа...

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

этот код работает как удаление и воссоздание table.and reset id.

удача


вы также можете использовать метод delete() SQLiteDatabase, например

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

licensed under cc by-sa 3.0 with attribution.