SQLiteDirectCursorDriver使用SelectionArgs或变通方法 - 使用占位符

时间:2012-09-12 11:27:33

标签: android sqlite where-clause

我有一个rawQuery字符串正在运行,但SQlite会抛出此警告:

  

SQLiteDirectCursorDriver(1058):找到以字符结尾的SQL字符串;

因为报价问题。所以我试图在查询中使用SelectionArgs,我没有真正替换值,如下所示:

String query = "SELECT Min(?) as oldest, Max(?) as newest, COUNT(?) as nb_data FROM ? WHERE ? BETWEEN (SELECT Min(?) FROM ?) AND (SELECT Max(?) FROM ?)";
String[] values = new String[] { TS, TS, col_2, table, TS, TS, table, TS, table };
Cursor mCount = database.rawQuery(query, values);

我无法使其工作,即使使用较少的SelectionArgs字符串(仅在查询的“WHERE”部分),因为没有真正的值替换要求而是占位符。

是否有设置此预准备语句的解决方案(使用占位符而不是使用引号或重写原始查询)以避免收到SQLiteDirectCursorDriver警告?

1 个答案:

答案 0 :(得分:0)

您只能将参数用于表达式,而不能用于标识符。

要防止出现此警告,只需在SQL查询字符串末尾省略分号。