سؤال

أنا خلق تطبيق ولدي مشاكل مع Cursor. وبعد انا لدي SQLiteDatabase هذا يعود لي Cursor عندما أحاول جلب القيم مع هذه الوظيفة:

public Cursor fetchOption(long rowId) throws SQLException {

    Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
        KEY_TITLE, KEY_BODY}, KEY_ROWID + "=" + rowId, null,
        null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}

لا أعرف كيفية الحصول على قيمة الحقل في Cursor. وبعد إذا فعلت ذلك مثل ذلك:

String a = mOptionDb.fetchOption(0).getColumnName(0).toString();
String b = mOptionDb.fetchOption(0).getColumnName(1).toString();
String c = mOptionDb.fetchOption(0).getColumnName(2).toString();

أنا فقط الحصول على اسم الأعمدة (_id, title, body) ولكن ليس القيم. أي اقتراحات حول كيفية تحقيق هذا؟

هل كانت مفيدة؟

المحلول

أعتقد أنك تستطيع أن تنسى التحقق من وجود NULL.

بدلا من ذلك، تحقق مما إذا كانت هناك بيانات ثم قم بالوصول إلى الأعمدة باستخدام المؤشر:

Cursor cursor = fetchOption(0);

if (cursor.moveToFirst()) // data?
   System.out.println(cursor.getString(cursor.getColumnIndex("title")); 

cursor.close(); // that's important too, otherwise you're gonna leak cursors

قد يكون من المنطقي أيضا قراءة برنامج تعليمي Android. يبدو أن البرنامج التعليمي المفكرة يناسب مشروع القانون: http://developer.android.com/guide/tutorials/notepad/index.html.

نصائح أخرى

يمكنك استعمال ال Cursorget* طرق لاسترداد القيم من النتيجة:

long id = cursor.getLong(cursor.getColumnIndex("_id"));
long title = cursor.getString(cursor.getColumnIndex("title"));
...

من الواضح أن ممارسة أفضل لاستخدام الثوابت (غالبا ما توفرها ContentRabroviders) بدلا من المكالمات getColumnIndex مع سلاسل هادئة.

يمكنك استخدام هذه الآلية.

Cursor record=db.test(finalDate);     
if(record.getCount()!=0){
    if(record.moveToFirst()){
        do{               
            Imgid1=record.getString(record.getColumnIndex(Database.PHOTO));                
        }while(record.moveToNext());                          
    } 
    record.close();        
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top