Convert results of SQLite Cursor to my object

余生颓废 提交于 2019-12-03 19:58:28

问题


I've executed some queries on my SQLite DB on Android.

Main instruction used is this:

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

Now I want the results of this query to be converted to a generic class I've created in the project. If you think I want an ORM system, you are right, but all I've found now are ORM systems that want to query the DB, save objects in the DB and manage the DB itself.

Instead now I need a 'simple' ORM feature that can do exactly what the google.gson library does with JSON strings, it converts JSON strings to custom objects, and I want the same but for converting SQLite cursors to my Classes.

Any suggestion how to do this?


回答1:


I don't think there is an automated way to do this. Just populate the object yourself. For example, if your cursor was just an id and a name and you wanted to create a Person object:

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

You could wrap this function in your own Cursor class to make the process transparent.




回答2:


Check out MicroOrm

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

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


来源:https://stackoverflow.com/questions/9009480/convert-results-of-sqlite-cursor-to-my-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!