2012-06-22 25 views
6

Parece que los cursores en Android solo pueden contener hasta 1 MB de datos.Cursor Android tamaño máximo

¿Cuál sería la forma más eficiente de obtener el número máximo de filas de una tabla en una base de datos SQLite que se mantenga por debajo del límite de 1 MB?

+0

La mejor manera que he encontrado hasta ahora es muestrear algunas filas y "estimar" cuántas filas puede tirar. Solo debe asegurarse de no sobrepasar el límite de 1 MB. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

el mejor método es utilizar el concepto de paginación, que significa obtener los datos de la base de datos en partes, obtener filas de diez por diez y borrar el cursor antes de la próxima recuperación de la base de datos. – deepak825

Respuesta

-1

Puede poner la cláusula LIMIT para que las filas se obtengan en partes.

+0

Correcto, pero ¿cómo puedo determinar cuál es el límite apropiado? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

puede usar la cláusula de recuento 1st – Programmer

+0

Luego puede dividir por igual o como quiera – Programmer

0

No creo que hay una manera fuerte y rápido para determinar el límite derecho, pero miré en la documentación CursorWindow y encontró que copyStringToBuffer (int row, int column, CharArrayBuffer buffer) parece prometedor como CharArrayBuffer tiene un campo entero llamado sizeCopied y el método copyStringToBuffer toma el texto en la fila y columna especificadas ¿Tal vez pueda obtener el tamaño del buffer y agregarlo para cada fila y columna que tenga? Si está utilizando SQLiteCursor, puede usar setWindow(CursorWindow window) para establecer su propia ventana.