Pergunta

Eu tenho um aplicativo Android usando um banco de dados SQLite local.

private SQLiteDatabase mDb;

quando eu executar essa consulta eu recebo o meu cursor sobre linhas com pid igual a id, conforme desejado:

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

quando eu executar a consulta a seguir, com o objetivo de obter esse mesmo conjunto de resultados, ordenados por get pid I " android.database.sqlite.SQLiteException: tipo de dados incompatibilidade "

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

Todas as idéias?

Foi útil?

Solução

Parece que você tem apenas um pouco acima mista. De acordo com o documentação SQLiteDatabase.query , o último argumento é a cláusula LIMIT. O segundo e último é a cláusula ORDER BY.

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

Editar

Mas, há também uma outra SQLiteDatabase.query , onde ORDER BY seria o último

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

Outras dicas

Isso funcionou para mim

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);
KEY_PID + " = " + "'" + id + "'"

Desde orderBy é o segundo último parâmetro na consulta; sua consulta seria assim

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

Se bem entendi o seu problema, tente isso.

    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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top