Подтвердить что ты не робот

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

У меня есть приложение для 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: несоответствие типа данных"

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

Любые идеи?

4b9b3361

Ответ 1

Похоже, вы немного перепутались. Согласно документации 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)

ИЗМЕНИТЬ

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

Cursor query (String table, 
            String[] columns, 
            String selection, 
            String[] selectionArgs, 
            String groupBy, 
            String having, 
            String orderBy)

Ответ 2

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

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);

Ответ 3

KEY_PID + " = " + "'" + id + "'"

Ответ 4

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

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

Ответ 5

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

    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);