Limitar los registros obtenidos en Android (base de datos Sqlite)
Estoy tratando de obtener mensajes SMS de la bandeja de entrada, los elementos enviados y borradores. Me gustaría hacer una paginación para mi lista de vista para que sea imprescindible que busque registros en páginas / trozos.
No estoy familiarizado con sqlite, que es la base de datos que entiendo android uso para almacenar los datos. ¿Puede alguien decirme cómo puedo restringir el número de registros que estoy buscando mediante el uso de contentResolver.query?
- NoClassDefFoundError al usar greenDao
- Recuperar una lista de todas las tablas de la base de datos
- ¿Cómo recuperar datos de un cursor en android?
- Cómo seleccionar el valor en mayúsculas en SQLite?
- Cómo ver los datos guardados en la base de datos android (SQLite)?
Además, ¿cuál es la forma de extraer el archivo de base de datos sqlite en mi máquina y navegar / consultar localmente para experimentar o ver datos en mi máquina?
¿Hay otras maneras mejores de implementar la paginación en android?
Gracias
- Android SQLiteAssetHelper No se puede actualizar la base de datos de sólo lectura de la versión 1 a 2:
- GreenDAO - clave primaria en varias columnas
- SQLite es sin tipo?
- Android: Obtener registro aleatorio en SQLite
- SQLiteAssetHelper - problemas en teléfonos específicos, por ejemplo OnePlus
- Android sqlite: cómo recuperar datos específicos de la columna en particular?
- Android: utilice la base de datos SQLite en la tarjeta SD (no utilizando el almacén de datos Android interno)
- Cómo utilizar SQLiteDatabase.CursorFactory
No parece haber ninguna manera de limitar sus resultados de SmsProvider
. Sin embargo, no debería realmente, dado que utiliza CursorAdapter
y no intenta leer el contenido en sus propias estructuras de datos. ¿Has probado esto?
De acuerdo con el sitio web Sqlite, puede utilizar una cláusula LIMIT … OFFSET … en su consulta:
Para cualquiera que se tropieza con esta respuesta buscando una forma de usar una cláusula LIMIT
con OFFSET
, descubrí de este error que Android utiliza la siguiente expresión regular para analizar la cláusula límite de una consulta:
En framework / base / core / java / android / base de datos / sqlite / SQLiteQueryBuilder.java:
LIMIT se comprueba con el siguiente sLimitPattern.
private static final Pattern sLimitPattern = Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?");
Tenga en cuenta que el regex acepta el formato offsetNumber,limitNumber
aunque no acepta la sentencia OFFSET
directamente.
Para extraer su base de datos para verla, haga una copia de ella en la tarjeta SD y luego use adp pull para obtenerla.