2010-03-23 46 views
57

我有一個查詢選擇ListView中的行而沒有限制。但現在我已經實現了一個SharedPreferences,用戶可以選擇在ListView中顯示多少行,我的SQLite查詢不起作用。我傳遞的說法是這樣的:在SQLite查詢中使用LIMIT語句

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

回答

109

,則equals(=)運營商不與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)); 

看看在這裏的SQLite的選擇語法:http://www.sqlite.org/syntaxdiagrams.html#select-stmt

此圖片是相當有用:http://www.sqlite.org/images/syntax/select-stmt.gif

+0

怎麼樣'「5 ,10「'子句?或者「LIMIT 3 OFFSET 2」 – 2017-08-03 12:44:51

3

對於任何人碰到這個答案尋找一種方式來使用LIMIT條款與OFFSET磕磕絆絆,我從Android使用下面的正則表達式來解析限制條款this bug發現查詢:

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

LIMIT子句與以下sLimitPattern檢查。

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

注意,正則表達式不接受格式offsetNumber,limitNumber即使它不直接接受OFFSET聲明。

-1

由於這個錯誤,這也是不允許負限制

8,-1

我不得不使用此解決方法

SQLiteQueryBuilder builder = new SQLiteQueryBuilder(); 
builder.setTables(table); 
String query = builder.buildQuery(projection, selection, null, null, null, sortOrder, null); 
query+=" LIMIT 8,-1"; 
相關問題