IT Share you

SQLite 쿼리에서 LIMIT 문 사용

shareyou 2020. 12. 15. 20:25
반응형

SQLite 쿼리에서 LIMIT 문 사용


ListView제한없이 행을 선택하는 쿼리가 있습니다. 하지만 이제 SharedPreferences사용자가에 표시 될 행의 양을 선택할 수 있도록 구현 ListView했으므로 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));

여기에서 SQLite 선택 구문을 살펴보십시오. http://www.sqlite.org/syntaxdiagrams.html#select-stmt

이 이미지는 다소 유용합니다. http://www.sqlite.org/images/syntax/select-stmt.gif


이 답변에 걸림돌이되는 사람을 위해 LIMIT을 사용하는 방법을 찾고있는 사람을 위해 Android가 다음 정규식을 사용하여 쿼리의 제한 절을 구문 분석한다는 것을 이 버그OFFSET 에서 발견했습니다 .

에서 <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.


음수 제한을 허용하지 않는이 버그로 인해

8, -1

이 해결 방법을 사용해야했습니다.

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

참조 URL : https://stackoverflow.com/questions/2497677/using-the-limit-statement-in-a-sqlite-query

반응형