¿Cómo se implementa el cursor de la base de datos de Android en los detalles?
Soy interesante acerca de los detalles de implementación del Cursor
en Android. Sé que básicamente es sólo una interfaz que proporciona acceso de lectura y escritura aleatorio al conjunto de resultados devuelto por una consulta de base de datos. Me pregunto sobre las implementaciones Cursor
particular:
- ¿Es una especie de estructura de datos que almacena el conjunto de resultados de la base de datos?
- ¿O es sólo una estructura que maneja sólo una fila?
- NullPointerException cuando se utiliza CustomListAdapter
- ¿Cuál es la forma más confiable para determinar la frecuencia de reloj de la CPU de los teléfonos Android?
- En Android, ¿cómo puedo configurar la altura y el ancho de un elemento ListView?
- IOException e es nulo
- Google Volley subrayado en nombre de host
- ¿Cómo puedo guardar el estado de mi webview al cambiar la orientación usando un webviewfragment
- Obtener ancho de pantalla Android en inmersiones
- Responder a llamadas de teléfono Android de PC por bluetooth
- Comunicación entre servicio y actividad en una aplicación android mediaplayer
- ¿Son abstractos todos los métodos de la interfaz?
- ¿Por qué falla mi comparación String to String?
- cómo puedo agregar elementos a listview dinámicamente en android
- Error de compilación de Maven para android Proyecto "error: paquete R no existe"
Es sólo una estructura de datos que almacena el conjunto de resultados de la base de datos
Sí.
¿O es alguna estructura que maneja sólo una fila?
No exactamente. El cursor puede manejar una o más filas según la consulta de origen. Cursor es un mapa de datos y contendrá tantas filas como devuelve la consulta de origen (select). Así que si la consulta devuelve cien filas, estas filas se insertan en Cursor y Cursor contienen estas cien filas.
Se puede imaginar Cursor como mapa de datos con tamaño dinámico (similar a Lista) donde los datos se colocan como "filas". Cada fila tiene identificación de fila propia (número de fila, podemos decir un puntero) que se genera gradualmente a medida que se insertan en Cursor y simplemente se puede mover entre filas con este número. Implícitamente cada cursor tiene "puntero real" colocado antes de la primera fila (-1 posición) así que si llamas a c.getString(0)
expectativa se lanzará porque no hay nada que recuperar.
Así que siempre tienes que llamar a cursor.moveToFirst()
que prepara Cursor para leer y si está vacío, el método devuelve false porque no hay fila.
- Cómo compartir la imagen http directamente a twitter en android?
- Android Handler para la tarea repetida – se superpone? Temporizador-tarea VS manejador VS alarma-administrador