بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

مشکل با cursor در بانک

مدیریت گفتگو
ATRAS 11 سال پیش
آخرین تغییر: 11 سال پیش

دوستان این خط از خطا دقیقا منظورش چیه.
 android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 52
یه توضیح درمورد برنامه بدم.من یک sqlite دارم که از پوشه asset موقع اجرا کپی میشه تو گوشی.حالا میخوام ازش Qery بگیرم ولی از cursor ایراد میگیره.حالا به نظرتون من کجا اشتباه کردم.

نظرات

احمد اسدی 11 سال پیش
کدت رو بزار. معمولآ وقتی مقداری رو از cursor میخونی، باید position رو هم در نظر بگیری
ATRAS 11 سال پیش
کدو در پایین قرار دادم.
sadeghbarout 11 سال پیش
مشکل از اینه که به محض اجرای کوئری میخوای ازش گزارش بگیری در صورتی که حداقل باید یه ردیف بری جلو مثلا با این دستور : cursor.moveToNext
sadeghbarout 11 سال پیش
ارورش هم داره همینو میگه که در مکان -1 که چیزی نیست بهت بدم ;)

پاسخ‌ها 4

ATRAS 11 سال پیش

  database = SQLiteDatabase.openOrCreateDatabase(ApplicationDbCopy.DB_QESTION_PATH, null);

Cursor cursor = database.rawQuery("SELECT * FROM quise ", null);

qestiondb = cursor.getString(cursor.getColumnIndex("soal"));

نظرات

احمد اسدی 11 سال پیش

 database = SQLiteDatabase.openOrCreateDatabase(ApplicationDbCopy.DB_QESTION_PATH, null);

  Cursor cursor = database.rawQuery("SELECT * FROM quise ", null);
	if( cursor != null && cursor.moveToFirst() ){
    qestiondb = cursor.getString(cursor.getColumnIndex("soal"));
	
    cursor.close(); 
}
 
  

نظرات

ATRAS 11 سال پیش
در چه مواقعی cursor مساوی null میشه؟
ATRAS 11 سال پیش
خب الان دقیقا مثل قبل یک بار دارم اینو صدا میکنم ولی با این شرط دیگه خطا نمیده و قشنگ کار میکنه.قزیه چیه؟
ATRAS 11 سال پیش

دوستان مگه نمیشه جلو شرط متغیر گذاشت؟آخه متغیر من از نوع عددیه مثلا عدد توشم هست 10 وقتی با متغیر مینویسم خطا میده ولی وقتی عدد میزارم کار میکنه.اینم کد.

 Cursor cursor = database.rawQuery("SELECT * FROM quise WHERE id=rnd",null);

نظرات

AhmadVB 11 سال پیش
این که شما نوشتید بایدم خطا بده ! توی پست بعدی جواب میدم.
AhmadVB 11 سال پیش
فقط rnd همون متغیرت هست دیگه ؟
ATRAS 11 سال پیش
بله
ATRAS 11 سال پیش
بله rnd متغیریه که یک عدد مثلا از 1 تا 10 به صورت رندوم میگیره.
AhmadVB 11 سال پیش

زمانی که شما یک پارامتر را می خواهید به Query اضافه کنید باید آن را طوری بنویسید که محتویاتش درون Query اضافه شود نه اسمش. مثلا در مثال بالا باید بنویسید :

 Cursor cursor = database.rawQuery("SELECT * FROM quise WHERE id="+ rnd,null);

دقت کنید که چیزی که درون رشته ارسال می شود برای SQL باید قابل درک باشد. متغیر rnd درون کد جاوا معنی دارد و در SQL معنی ندارد مگر شما اصلطلاحا stored procedure بنویسید که خارج از بحث این مکان است.

نظرات

ATRAS 11 سال پیش
ممنون حامد جان اصلا هواسم به این قسمت نبود.بازم ممنون.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .