在SQLite查询中使用LIMIT语句

我有一个查询selectListView行没有限制。 但是现在我已经实现了一个SharedPreferences ,用户可以select在ListView显示多less行,我的SQLite查询不起作用。 我以这种方式传递论据:

 return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, "LIMIT='" + limite + "'"); 

LIMIT子句不使用等号( = )。 去掉它。

这是一个LIMIT查询的例子:

 SELECT column FROM table ORDER BY somethingelse LIMIT 5, 10 

要么:

 SELECT column FROM table ORDER BY somethingelse LIMIT 10 

就你而言,正确的说法是:

 return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, String.valueOf(limite)); 

在这里看一下SQLiteselect语法: http : //www.sqlite.org/syntaxdiagrams.html#select-stmt

这个图像相当有用: http : //www.sqlite.orghttp://img.dovov.comsyntax/select-stmt.gif

对于任何人都在这个答案寻找一种方法来使用OFFSET LIMIT子句,我发现这个错误 ,Android使用下面的正则expression式来parsing查询的限制条款:

<framework/base/core/java/android/database/sqlite/SQLiteQueryBuilder.java>

LIMIT子句用下面的sLimitPattern进行检查。

 private static final Pattern sLimitPattern = Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?"); 

请注意,regex确实接受格式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";