Question

J'ai une application Android utilisant une base de données sqlite locale.

private SQLiteDatabase mDb;

Lorsque j'exécute cette requête, mon curseur est placé sur des lignes dont le pid est égal à id, comme souhaité:

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

lorsque j'exécute la requête suivante dans le but d'obtenir le même ensemble de résultats, classé par pid, j'obtiens " android.database.sqlite.SQLiteException: incompatibilité de types de données ".

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

Des idées?

Était-ce utile?

La solution

Il semblerait que vous soyez un peu mélangé. Selon le SQLiteDatabase.query , le dernier argument est la clause LIMIT . L’avant-dernière colonne est la clause ORDER BY .

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

MODIFIER

Mais il existe aussi un autre SQLiteDatabase.query ORDER BY serait le dernier

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

Autres conseils

Cela a fonctionné pour moi

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 + "'"

Puisque Orderby est le dernier dernier paramètre de la requête; votre requête serait comme ça

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

Si j'ai bien compris votre problème, essayez ceci.

    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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top