Пока TABLE не определен с помощью WITHOUT ROWID
, вы можете получить ROWID (или это должно быть rowid , см. Ниже случай), если Вы указываете его как столбец для извлечения.
Например, для таблицы с 3 определенными столбцами (Имена, Цвет и Возраст) без обычного столбца _id . Следующий rawQuery работает и возвращает ROWID : -
Cursor csr = db.rawQuery("SELECT Names, Colour, Age, ROWID FROM " + TABLE_NAME,null);
Примечание! что имя столбца в курсоре строчное согласно: -
![enter image description here](https://i.stack.imgur.com/UUI5m.jpg)
Примечание! ROWID в SELECT SQL не зависит от регистра (например, работает RoWiD).
Использование
Cursor csr = db.rawQuery("SELECT * FROM " + TABLE_NAME,null);
НЕ БУДЕТ возвращать ROWID (аналогично для нуля для столбцов при использовании метода query
).
Использование query
( вместо rawQuery
) работает аналогичным образом, то есть вам нужно указать ROWID (обратите внимание на альтернативы ROWID ниже) в качестве столбца, который нужно получить, например, : -
Cursor csr = db.query(TABLE_NAME,new String[]{
"OiD",
"Names",
"Colour",
"Age"
},null,null,null,null,null);
Альтернативы ROWID
Вместо ROWID
вы также можете использовать _ROWID_
или OID
(независимо от регистра) в качестве имени столбца в запросе, отмечая что имя столбца в результирующем курсоре является rowid т.е. это строчные буквы .