2012-01-25 8 views
8

He realizado algunas consultas en mi SQLite db en Android.Convertir los resultados del Cursor Sqllite a mi objeto

instrucción principal utilizada es la siguiente:

Cursor cursor = myDB.rawQuery(select, null); 

Ahora quiero que los resultados de esta consulta se conviertan en una clase genérica que he creado en el proyecto. Si crees que quiero un sistema ORM, tienes razón, pero todo lo que he encontrado ahora son sistemas ORM que desean consultar el DB, guardar objetos en el DB y administrar el DB mismo. Ahora necesito una función ORM 'simple' que pueda hacer exactamente lo que la biblioteca google.gson hace con cadenas JSON, convierte cadenas JSON en objetos personalizados, y quiero lo mismo pero para convertir cursores SQLite a mis clases.

¿Alguna sugerencia de cómo hacer esto?

+0

qué enfoque ¿Finalmente usan? – j10

Respuesta

12

No creo que haya una forma automática de hacerlo. Solo rellene el objeto usted mismo. Por ejemplo, si el cursor era sólo un identificador y un nombre y desea crear un objeto Person:

Person populatePerson(Cursor cursor) 
{ 
    try 
    { 
     int idIndex = cursor.getColumnIndexOrThrow("_id"); 
     int nameIndex = cursor.getColumnIndexOrThrow("name"); 
     long id = cursor.getLong(idIndex); 
     String name = cursor.getString(nameIndex); 
     return new Person(id, name); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

Se podría concluir esta función en su propia clase cursor para que el proceso sea transparente.

+0

Los nombres de las columnas se generan dinámicamente, aquellos no se conocen inicialmente. ¿Cómo puedo convertir esos valores en cadena JSON? ¿Hay alguna otra forma de convertir la cadena JSON? – Karthick

4

Salida MicroOrm

private static class SomeObject { 
    @Column(SOME_FIELD) 
    private String mSomeField; 
} 

SomeObject object = microOrm.fromCursor(cursor, SomeObject.class); 
Cuestiones relacionadas