Android 游标列

Android cursor columns

可以安全地假设 Android 游标只有我请求的列,并且 returns 它们的顺序与它们在 select 语句中的顺序相同,即。 e.以下代码是否始终有效?

Cursor cursor = db.query("NAMES",
    new String[] {"FIRSTNAME", "LASTNAME", "MOBILE"},
    "ID = " + requestedId, null, null, null, null, null);

if (cursor.moveToFirst()) {
    firstname = cursor.getString(0);
    lastname = cursor.getString(1);
    mobile = cursor.getString(2);
}

或者我应该像下面那样坚持明确地获取列索引,因为 Android SQLite 可能会在 query() 返回的游标中添加一些辅助数据或更改列的顺序?

firstname = cursor.getString(cursor.getColumnIndex("FIRSTNAME"));
lastname = cursor.getString(cursor.getColumnIndex("LASTNAME"));
mobile = cursor.getString(cursor.getColumnIndex("MOBILE"));

Is is safe to assume that Android cursor only has the columns I requested and returns them in the same order as they are in the select statement, i. e. will the following code always work?

是的,很安全。

在幕后,它只是 SQLiteQueryBuilder 进行愚蠢的字符串连接。您可以查看 source 以了解更多信息。