2012-01-25 4 views
8

Я выполнил некоторый запрос на моем SQLite db на Android.Преобразование результатов Sqllite Курсор в мой объект

Основная инструкция используется следующим образом:

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

Теперь я хочу, чтобы результаты этого запроса должны быть преобразованы в универсальный класс я создал в проекте. Если вы считаете, что я хочу систему ORM, вы правы, но все, что я нашел сейчас, это системы ORM, которые хотят запросить БД, сохранить объекты в БД и управлять самой БД. Вместо этого мне нужна «простая» функция ORM, которая может делать именно то, что делает библиотека google.gson со строками JSON, она преобразует строки JSON в пользовательские объекты, а я хочу то же самое, но для преобразования курсоров SQLite в мои классы.

Любое предложение, как это сделать?

+0

какой подход вы, наконец, использовать? – j10

ответ

12

Я не думаю, что есть автоматизированный способ сделать это. Просто заполните объект самостоятельно. Например, если курсор был только идентификатор и имя, и вы хотите создать объект 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(); 
    } 
} 

Вы можете обернуть эту функцию в своем собственном классе Cursor, чтобы сделать процесс прозрачным.

+0

Имена столбцов генерируются динамически, изначально они не знают. Как преобразовать эти значения в строку JSON? Есть ли другой способ преобразования строки JSON? – Karthick

4

Заканчивать MicroOrm

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

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