[使用ORDER BY时数据类型不匹配错误

问题描述 投票:32回答:5

我有一个使用本地sqlite数据库的android应用。

private SQLiteDatabase mDb;

当我运行此查询时,根据需要,我的pid等于id的行得到了Cursor:

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

有什么想法吗?

android sqlite
5个回答
38
投票

看来您有点混了。根据SQLiteDatabase.query文档,最后一个参数是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将是最后一个

SQLiteDatabase.query

24
投票

这对我有用

ORDER BY

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

4
投票

因为Orderby是查询中的倒数第二个参数;您的查询将是这样

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
投票

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

KEY_PID + " = " + "'" + id + "'"
© www.soinside.com 2019 - 2024. All rights reserved.