Android游标列

时间:2015-02-14 08:57:43

标签: android sqlite

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

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"));

1 个答案:

答案 0 :(得分:2)

  

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

是的,这很安全。

在引擎盖下,它只是SQLiteQueryBuilder做了愚蠢的字符串连接。您可以查看source以了解详情。