Is the field "_id" necessary in Android SQLite?
_id is useful when you are using the enhanced Adapters which make use of a Cursor (e.g. ResourceCursorAdapter). It's used by these adapters to provide an ID which can be used to refer to the specific row in the table which relates the the item in whatever the adapter is being used for (e.g. a row in a ListView).
It's not necessary if you're not going to be using classes which need an _id column in a cursor, and you can also use "as _id" to make another column appear as though it's called _id in your cursor.
It's quite convenient in many cases to have an id field. I prefer mine to be auto-incrementing (as shown below). I'm always finding new uses for the id field :)
When it comes time to attach the data to an adapter, I like to use a table name alias to query the id field as _id
. Example: SELECT id _id, msg from message order by id
. That way the adapter sees a field called _id
and everybody's happy.
Here's a sample of how I define my tables:
CREATE TABLE message (id INTEGER PRIMARY KEY AUTOINCREMENT,timestamp INTEGER,tripID TEXT, msg TEXT);