1

我正在尝试运行使用 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";

是我想要的列名和我的主键。问题是当我运行此查询时,结果将“数据库名称”作为表中的值而不是实际值。我可以运行查询

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

它工作正常,我不知道为什么我不能正确使用 selectionargs。谁能帮我解决这个问题?

4

2 回答 2

2

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

Cursor results = db.rawQuery(String.format("SELECT %s as _id FROM DatabaseList", sel));
于 2013-01-07T08:20:56.327 回答
1

developer.android.com,你只能放“?” 在 where 子句上,而不是要查询的列:

  • selectionArgs:您可以在查询的 where 子句中包含 ?s,它将被 selectionArgs 中的值替换。这些值将绑定为字符串。
于 2013-01-07T08:18:39.033 回答