android:查询中的ORDER BY

时间:2009-05-04 03:15:38

标签: android sqlite

我有一个使用本地sqlite数据库的Android应用程序。

private SQLiteDatabase mDb;

当我运行此查询时,我根据需要将prsor放在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 个答案:

答案 0 :(得分:38)

看起来你有点混淆了。根据{{​​3}}文档,最后一个参数是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)

答案 1 :(得分:24)

这对我有用

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

答案 2 :(得分:7)

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

答案 3 :(得分:4)

由于Orderby是查询中的倒数第二个参数; 你的查询就像这样

ArrayList<NameValuePair> nameValuePairs = new  ArrayList<NameValuePair>();

nameValuePairs.add(new BasicNameValuePair("image",image_str));

答案 4 :(得分:2)

如果我正确理解了您的问题,请尝试此操作。

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