質問
ローカルsqliteデータベースを使用するAndroidアプリを持っています。
private SQLiteDatabase mDb;
このクエリを実行すると、必要に応じて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
句です。最後から2番目は、 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 + "'"
Orderbyはクエリの最後から2番目のパラメータです。 クエリは次のようになります
mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID},
KEY_PID+" = "+id, null, null, null, KEY_PID+" DESC", null);
問題を正しく理解できたら、これを試してください。
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);
所属していません StackOverflow