2012-03-18 21 views
9

Tengo este método que eliminará todas las filas de una tabla, pero también quiero que restablezca el autoincrement para que cuando se agrega una nueva fila se iniciará de nuevo. La instrucción SQL que estoy usando no funciona debido a ciertas columnas que no existen. ¿Lo estoy haciendo bien?Restablecimiento Autoincrement en 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); 

} 

Respuesta

19

que necesita comillas simples alrededor de su nombre de la tabla, es decir

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

Sobre la base de la respuesta de dldnh:

La consulta siguiente configurará seq al valor más grande en la columna de la col identidad en la tabla Tbl, por lo que no hay riesgo de violar las restricciones.

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

también se puede utilizar en borrar método() de SQLiteDatabase, como este

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

yo estaba tratando demasiado duro.

último, tengo el código respuesta ...

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

este código obra como borrar y volver a crear el identificador de Reset table.and.

buena suerte

+0

importante: en trabajo sugar orm en android studio debe deshabilitar la ejecución instantánea –

Cuestiones relacionadas