我有一个使用本地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");
有什么想法吗?
看来您有点混了。根据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
这对我有用
ORDER BY
Cursor query (String table,
String[] columns,
String selection,
String[] selectionArgs,
String groupBy,
String having,
String orderBy)
因为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);
如果我正确理解了您的问题,请尝试此。
KEY_PID + " = " + "'" + id + "'"