Android 在SQLite查询中使用LIMIT语句

Android 在SQLite查询中使用LIMIT语句,android,sqlite,Android,Sqlite,我有一个查询,它在列表视图中选择行,而没有限制。但是现在我已经实现了一个SharedReferences,用户可以选择在ListView中显示多少行,我的SQLite查询就不起作用了。我是这样传递论点的: return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, "LIMIT='" + limite + "'");

我有一个查询,它在
列表视图中选择行,而没有限制。但是现在我已经实现了一个
SharedReferences
,用户可以选择在
ListView
中显示多少行,我的SQLite查询就不起作用了。我是这样传递论点的:

return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, "LIMIT='" + limite + "'");
equals(
=
)运算符不与
LIMIT
子句一起使用。移除它

下面是一个示例
LIMIT
查询:

SELECT column FROM table ORDER BY somethingelse LIMIT 5, 10
或:

在您的情况下,正确的说法是:

return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, String.valueOf(limite));
请看一下SQLite select语法:


这张图片非常有用:

对于那些在这个答案上跌跌撞撞地寻找使用带有偏移量的
LIMIT
子句的方法的人,我发现Android使用以下正则表达式来解析查询的LIMIT子句:

LIMIT子句使用以下模式进行检查


请注意,正则表达式确实接受格式
offsetNumber,limitNumber
,即使它不直接接受
OFFSET
语句。

由于这个错误,它也不允许负限制

8,-1

我不得不使用这种变通方法

SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(table);
String query = builder.buildQuery(projection, selection, null, null, null, sortOrder, null);
query+=" LIMIT 8,-1";
“5,10”条款怎么样?或
限制3偏移量2
private static final Pattern sLimitPattern = Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?");
SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
builder.setTables(table);
String query = builder.buildQuery(projection, selection, null, null, null, sortOrder, null);
query+=" LIMIT 8,-1";