我有一个使用本地sqlite数据库的Android应用程序.
private SQLiteDatabase mDb;
当我运行这个查询时,我根据需要将我的Cursor放在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");
有任何想法吗?
看起来你有点混淆了.根据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
这里ORDER BY
将是最后一次
Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String 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 + "'"