Android sqlite rawquery选择args问题

时间:2013-01-07 08:04:48

标签: java android sqlite

我正在尝试运行使用rawquery来运行带有主键别名的查询以使其成为_id,以便我可以使用SimpleCursorAdapter,这就是我所拥有的:

String sel = DatabaseListDB.COLUMN_DATABASE_NAME;
Cursor results = db.rawQuery("SELECT ? as _id FROM DatabaseList", 
    new String[] {sel});

在我的SqlLiteHelperClass

public static final String COLUMN_DATABASE_NAME = "databaseName";

是我想要的列名和主键。问题是,当我运行此查询时,结果会将'databaseName'作为表中的值而不是实际值。 我可以将查询作为

运行
Cursor results = db.rawQuery("SELECT databaseName as _id FROM DatabaseList", 
    null);

它工作正常,我不知道为什么我不能正确使用选择标记。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

?应该用于 WHERE 参数。在您的情况下,您只需将查询更改为:

Cursor results = db.rawQuery(String.format("SELECT %s as _id FROM DatabaseList", sel));

答案 1 :(得分:1)

developer.android.com,你只能把“?” on where子句,而不是您要查询的列:

  • selectionArgs:您可以在查询中的where子句中包含?s,它将被selectionArgs中的值替换。这些值将绑定为字符串。