Frage

Ich habe eine Android-App eine lokale SQLite-Datenbank bekam verwenden.

private SQLiteDatabase mDb;

Wenn ich diese Abfrage ausführen bekomme ich meinen Cursor über Zeilen mit pid gleich id, wie gewünscht:

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

, wenn ich die folgende Abfrage ausführen, die gleiche Ergebnismenge zu erhalten Ziel, sortiert nach pid erhalte ich " android.database.sqlite.SQLiteException: Datentyp Mismatch "

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

Irgendwelche Ideen?

War es hilfreich?

Lösung

Es sieht aus wie Sie bekam nur ein wenig durcheinander. Gemäß der SQLiteDatabase.query , wo ORDER BY würde letztes Mal gewesen sein

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

Andere Tipps

Das ist für mich gearbeitet

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

Da orderby ist der zweite letzte Parameter in der Abfrage; Ihre Abfrage so sein würde

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

Wenn ich das richtig das Problem zu verstehen, versuchen Sie dies.

    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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top