سؤال

لدي التطبيق الروبوت باستخدام قاعدة بيانات 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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top