الحصول على قيمة الحقل مع المؤشر
-
05-09-2019 - |
سؤال
أنا خلق تطبيق ولدي مشاكل مع 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.
نصائح أخرى
يمكنك استعمال ال Cursor
'س get*
طرق لاسترداد القيم من النتيجة:
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();
}