I am modifying my Android app to work with ORMLite, and it currently uses a number of CursorAdapters, which I quite want to keep in an attempt to minimise coding.
I'm not 100% sure but t appears that when ORMLite creates an id field in the db, it always uses id
, whereas CursorAdapter needs _id
.
It is possible to get round this using a query like the following:
select id as _id ......
but the Dao.queryRaw()
method returns a list, not a Cursor, so the way I have done it is to open another SQLiteOpenHelper database connection and use rawQuery()
.
This works, but are there any better ways of doing it at all? It seems overkill to have two separate database connections, and perhaps storing up trouble later.
It turns out I did need a raw SQL query with ORMLite after all as I needed to do a Left Join, (i.e. not as a result of having to rename the id column in a query, that is not necessary as per Gray's answer above)
The way I did it is below:
Thanks for advice
Your comments indicate that you've already answered you problem. You can certainly create a column named "_id" using ORMLite:
or
If you are working with
Cursor
s then you may want to take a look at thelast()
andmoveAbsolute(...)
methods on theDatabaseResults
class. Also, theAndroidDatabaseResults
(which you can cast to) also has agetRawCursor()
method which returns the underlyingCursor
object and has additionalgetCount()
andgetPosition()
methods.Here are some more information about ORMLite and
Cursor
s:You can get access to the
Cursor
using something like the following: