2012-01-25 11 views
8

Wykonałem kwerendę na moim SQLite db na Androida.Konwersja wyników Sqllite Cursor na mój obiekt

Główny instrukcja stosowane to:

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

Teraz chcę wyniki tego zapytania być konwertowane do ogólnej klasy I utworzonej w projekcie. Jeśli myślisz, że chcę system ORM, masz rację, ale wszystko, co znalazłem, to systemy ORM, które chcą zapytać DB, zapisać obiekty w DB i zarządzać samym DB. Zamiast tego potrzebuję "prostej" funkcji ORM, która może zrobić dokładnie to samo, co biblioteka google.gson z ciągami JSON, konwertuje ciągi JSON do niestandardowych obiektów i chcę tego samego, ale do konwersji kursorów SQLite do moich Klasy.

Wszelkie sugestie, jak to zrobić?

+0

jakie podejście czy wreszcie korzystać? – j10

Odpowiedz

12

Nie sądzę, że jest to zautomatyzowany sposób. Wystarczy wypełnić obiekt samemu. Na przykład, jeśli kursor był tylko identyfikator i nazwę i chcesz utworzyć obiekt osobę:

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(); 
    } 
} 

Można owinąć tę funkcję w swojej własnej klasy kursora, aby proces przejrzyste.

+0

Nazwy kolumn są generowane dynamicznie, początkowo nie są znane. Jak mogę przekonwertować te wartości na ciąg znaków JSON? Czy jest jakiś inny sposób konwertowania ciągu JSON? – Karthick

4

Wyjazd MicroOrm

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

SomeObject object = microOrm.fromCursor(cursor, SomeObject.class); 
Powiązane problemy