SimpleAdapter需要一个_id字段

时间:2014-09-09 19:30:03

标签: android sqlite

我明白了:

Cursor c = db.query("Org", null, null, null, null, null, null);

这意味着我选择了一张桌子" Org",但是我需要这样做:

 Cursor c = db.rawQuery(" SELECT "+ id + " AS _id")

因为SimpleAdapter由于某种原因需要一个_id字段,否则会因错误而崩溃。如何将此2合并为一个查询?

2 个答案:

答案 0 :(得分:2)

query function的第二个参数是列的列表。 如果要重命名列,则不能盲目返回所有列,但必须列出所需的列:

String[] columns = new String[] { id+" AS _id", "Name", "Color", "whatever..." };
Cursor c = db.query("Org", columns, null, null, null, null, null);

答案 1 :(得分:0)

对于你的陈述:Cursor c = db.query("Org", null, null, null, null, null, null);第二个参数是错误的,你应该提到它中的列名。

public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)

然而,

Cursor c = db.rawQuery(" SELECT "+ id + " AS _id from Org"); 

表示您选择id并使用AS创建_id的别名,并选择此id from {{1} }表。 所以现在您将能够从列名Org访问此查询的结果,并且为了访问结果使用:

_id