Base de datos Android SQLite Después de eliminar la tabla, ¿el id comienza desde 1?
Tengo una duda que si suprimo la tabla usando las sentencias siguientes,
SQLiteDatabase db = this.getWritableDatabase(); db.delete(date_difference, null, null);
Entonces si estoy insertando una fila como un registro fresco y primer en la tabla, el incremento automático de la clave principal de ID de los registros comenzará desde 1?
- Causado por: android.database.sqlite.SQLiteException: no hay tal tabla: (código 1) Android
- "SQLiteDiskIOException: código de error 10: error de E / S de disco" retuns en ICS y Samsung Nexus en DROP TABLE
- Android SQLite nueva versión de DB con una tabla eliminada
- Cómo capturar excepción en la transacción sqllite - java android
- inicializar una base de datos sqlite android
- Ormlite o sqlite ¿Cuál es bueno para la perspectiva de Android?
- Chmod falló: EPERM (operación no permitida) en android?
- Inserción o actualización de SQLite de Android
- Actividad y acceso al fondo de acceso a la base de datos SQLite
- ¿Cómo debo notificar al usuario que SQLite Asset Helper está cargando la base de datos por primera vez?
- La base de datos Robolectric que accede arroja un error
- Cómo obtener NoClassDefFoundError al intentar utilizar Proguard y SQLcipher en Android
- Android Sq Lite cerró la excepción
Si no se especifica ROWID en el inserto o si el ROWID especificado tiene un valor NULL, se crea automáticamente un ROWID apropiado. El algoritmo usual es dar a la fila recién creada un ROWID que es uno más grande que el ROWID más grande de la tabla antes del inserto. Si la tabla está inicialmente vacía, se utiliza un ROWID de 1. Si el ROWID más grande es igual al entero más grande posible (9223372036854775807), entonces el motor de base de datos comienza a escoger ROWIDs candidatos positivos al azar hasta que encuentre uno que no se utilice previamente.
Así que sí, después de eliminar la tabla, los ID empezarán desde 1
La documentación proporcionada indica que el método delete es:
Convenience method for deleting rows in the database.
La sintaxis es:
int delete(String table, String whereClause, String[] whereArgs)
Por lo tanto, no comenzará de nuevo. Continuará con el último incremento. Si eliminó toda la tabla y la volvió a crear, el incremento comenzaría en 1.
SQLite realiza un seguimiento del ROWID más grande que una tabla haya realizado utilizando una tabla interna denominada "sqlite_sequence" . La tabla sqlite_sequence se crea e inicializa automáticamente cada vez que se crea una tabla normal que contiene una columna AUTOINCREMENT **. El contenido de la tabla sqlite_sequence se puede modificar utilizando las sentencias UPDATE, INSERT y DELETE ordinarias **. Sin embargo, hacer modificaciones en esta tabla probablemente perturbarán el algoritmo de generación de claves AUTOINCREMENT. Asegúrese de saber lo que está haciendo antes de emprender tales cambios.
Así que cuando elimines tu tabla y la vuelvas a crear, debes hacer que SQLITE_SEQUENCE se reinicie desde 0.
Usted debe hacer algo como esto:
Delete from date_difference; Delete from sqlite_sequence where name='date_difference';
Cuidado porque el campo 'table name'
en la cláusula where distingue entre mayúsculas y minúsculas.
Lea esto para más información.
Defina el campo de clave principal como
INTEGER PRIMARY KEY AUTOINCREMENT DEFAULT 1
A continuación, quite el código si está haciendo la inserción de cualquier valor para el campo de clave principal como siguiente
values.put(KEY_PRIMARY, object.getIntegerValue());
- Los botones de hardware no se pueden hacer clic en el emulador de Android
- Utilizar `SharedPreferences` para almacenar el token de autenticación