2012-09-18 26 views
14

Soy un programador novato androide y recientemente he seguido un tutorial que muestra cómo crear una base de datos SQLite local y luego acceder a la base de datos utilizando SQLiteDatabase.rawQuery para devolver un cursor. Me gustaría modificar mi aplicación para usar CursorLoader, que aparentemente es una mejor manera de acceder a la base de datos. Mi problema es que el constructor CursorLoader espera que se proporcione un URI. ¿Acabo de ingresar "file: /// [path to db]"? Parece un poco desordenado.CursorLoader, obtener URI de base de datos local

+0

Debe publicar el enlace al tutorial para completar – Merlin

Respuesta

7

La razón detrás del cargador del cursor aceptar un URI es que se espera para consultar una ContentProvider y no una base de datos en bruto.

Por lo tanto, sugieren que se crea un proveedor de contenidos que utiliza internamente su base de datos, de modo que usted puede utilizar la clase CursorLoader directamente.

La ventaja de usar un proveedor de contenidos es que encapsula mejor sus datos y se puede aprovechar fácilmente una gran cantidad de APIs de Android directamente.

Estas son algunas guías sobre cómo crear un proveedor de contenido

http://developer.android.com/guide/topics/providers/content-provider-creating.html

http://thinkandroid.wordpress.com/2010/01/13/writing-your-own-contentprovider/

Si decide no crear un ContentProvider puede extender AsyncTaskLoader o el cargador cursor directamente para consultar los datos la forma que tu quieras.

+0

Gracias esto ayuda un poco. – user1681358

3

Tener un vistazo a la biblioteca de LoaderEx CommonsWare. Le permite usar un Loader con un SQLiteDatabase local, por lo que no tiene que tomarse la molestia de crear su propio ContentProvider.

+1

Me gustaría que al menos mi propia implementación ContentProvider funcione, porque parece ser la forma "estándar" de hacer las cosas, incluso si parece demasiado exagerada para las pequeñas aplicaciones independientes. Pero echaré un vistazo a esta biblioteca en algún momento una vez que entienda los conceptos básicos. – user1681358

+0

De git: 'ESTE PROYECTO ESTÁ DESCONTINUADO. Úselo bajo su propio riesgo. Si está manteniendo un tenedor público que le gustaría que otros consideren usar, agregue un problema solicitando un enlace al tenedor de este README. – zeroDivider

Cuestiones relacionadas