سؤال
لدي التطبيق الروبوت باستخدام قاعدة بيانات sqlite المحلية.
private SQLiteDatabase mDb;
عند تشغيل هذا الاستعلام أحصل على المؤشر على الصفوف مع pid يساوي الهوية ، كما هو مطلوب:
mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID},
KEY_PID+" = "+id, null, null, null, null, null);
عند تشغيل الاستعلام التالي تهدف إلى الحصول على نفس النتائج التي أمرت pid فهمت "الروبوت.قاعدة البيانات.سكليتي.SQLiteException:عدم تطابق نوع البيانات"
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 + "'"
منذ Orderby هو الثاني الماضي معلمة في الاستعلام ؛ الاستعلام الخاص بك سوف يكون مثل هذا
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