我明白了:
Cursor c = db.query("Org", null, null, null, null, null, null);
这意味着我选择了一张桌子" Org",但是我需要这样做:
Cursor c = db.rawQuery(" SELECT "+ id + " AS _id")
因为SimpleAdapter由于某种原因需要一个_id
字段,否则会因错误而崩溃。如何将此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