Android: ORDER BY в запросе - PullRequest
       29

Android: ORDER BY в запросе

32 голосов
/ 04 мая 2009

У меня есть приложение для Android, использующее локальную базу данных sqlite.

private SQLiteDatabase mDb;

когда я запускаю этот запрос, я получаю свой Курсор над строками с pid, равным id, как требуется:

mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, 
    KEY_PID+" = "+id, null, null, null, null, null);        

когда я запускаю следующий запрос, чтобы получить тот же набор результатов, упорядоченный по pid, я получаю « android.database.sqlite.SQLiteException: datatype mismatch »

mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, 
    KEY_PID+" = "+id, null, null, null, null, KEY_PID+" DESC");

Есть идеи?

Ответы [ 5 ]

38 голосов
/ 04 мая 2009

Похоже, вы немного перепутали. Согласно документации SQLiteDatabase.query, последним аргументом является предложение LIMIT. Вторым по длине является предложение ORDER BY.

Cursor query (boolean distinct, 
            String table, 
            String[] columns, 
            String selection, 
            String[] selectionArgs, 
            String groupBy, 
            String having, 
            String orderBy, // <-- ORDER BY
            String limit)

EDIT

Но есть и другой SQLiteDatabase.query, где ORDER BY будет последним

Cursor query (String table, 
            String[] columns, 
            String selection, 
            String[] selectionArgs, 
            String groupBy, 
            String having, 
            String orderBy)
24 голосов
/ 16 января 2013

Это сработало для меня

String filter = MySQLiteHelper.JOB_ID + "=" + Integer.toString(jobID);
String orderBy =  MySQLiteHelper.LOG_TIME + " DESC";
Cursor cursor = database.query(MySQLiteHelper.LOG_TABLE_NAME, logTableColumns,
        filter, null, null, null, orderBy);
7 голосов
/ 13 сентября 2010
KEY_PID + " = " + "'" + id + "'"
4 голосов
/ 24 октября 2015

Так как Orderby является вторым последним параметром в запросе; ваш запрос будет выглядеть так

mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, 
    KEY_PID+" = "+id, null, null, null, KEY_PID+" DESC", null);
2 голосов
/ 17 января 2017

Если я правильно понял вашу проблему, попробуйте это.

    String[] columns = new String[] {KEY_PID, KEY_TID};
    String where = KEY_PID + " = " + Integer.toString(id);
    String orderBy = KEY_PID + " DESC";

    Cursor cursor = mDb.query(PT_TABLE, columns, where, null, null, null, orderBy);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...