SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

android.database.CursorIndexOutOfBoundsException

आप अनुक्रमणिका 2 पर किसी आइटम को पुनः प्राप्त करने का प्रयास कर रहे हैं लेकिन यह अनुक्रमणिका वास्तव में मौजूद नहीं है (कर्सर का आकार 2 है इसलिए अनुक्रमणिका 0,1 हैं)।

अपना लूप बदलें:

if (result != null && result.moveToFirst()){
    do {
       Post post = new Post();
       post.setPostId(result.getInt(0));
       posts.add(post);
       ....
    } while (result.moveToNext());
}

अब इसे सही ढंग से काम करना चाहिए।

नोट: कॉल करना न भूलें moveToFirst() विधि जो कर्सर को पहले रिकॉर्ड में ले जाती है (अंतर्निहित रूप से पहली पंक्ति से पहले स्थित है) और इसे पढ़ने के लिए तैयार करती है। यह जाँचने का एक आसान तरीका भी है कि कर्सर वैध है या नहीं।

नोट 2: कॉलम इंडेक्स का उपयोग न करें, आप बस गिनने में गलती कर सकते हैं। कॉलम नामों का उपयोग करने के बजाय - इस दृष्टिकोण की आम तौर पर अनुशंसा की जाती है उदा। cursor.getColumnIndex("<columnName>")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आईडी का उपयोग करके एकाधिक पंक्तियां हटाएं?

  2. कैसे आईआईएफ () SQLite में काम करता है

  3. एक टैब से अलग सूची के रूप में आउटपुट SQLite क्वेरी परिणाम

  4. SQLite JSON_REPLACE ()

  5. लाइटवेट वर्डप्रेस इंस्टालेशन :SQLite के साथ वर्डप्रेस कैसे स्थापित करें