2010-11-29 8 views
5

मैं एक विशिष्ट तालिका की अधिकतम आईडी पुनर्प्राप्त करने के लिए एक विधि बनाने की कोशिश कर रहा हूं।एंड्रॉइड और एसक्यूएलएइट - तालिका के अधिकतम आईडी को पुनर्प्राप्त करें

इस कोड है कि काम नहीं करता:

private long getMaxId() 
{ 
    String query = "SELECT MAX(id) AS max_id FROM mytable"; 
    Cursor cursor = db.rawQuery(query, new String[] {"max_id"}); 

    int id = 0;  
    if (cursor.moveToFirst()) 
    { 
     do 
     {   
      id = cursor.getInt(0);     
     } while(cursor.moveToNext());   
    } 
    return id; 
} 

अपवाद उत्पन्न किया जा रहा है:

E/AndroidRuntime(24624): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x200408 

मुझे लगता है समस्या इस लाइन है:

  id = cursor.getInt(0); 

क्या किसी के पास यह तय करने का विचार है कि इसे कैसे ठीक किया जाए?

धन्यवाद।

उत्तर

8

के बजाय ऐसे:

Cursor cursor = db.rawQuery(query, new String[] {"max_id"}); 

साथ

Cursor cursor = db.rawQuery(query, null); 
rawQuery description से

, 2 तर्क के लिए:

आप शामिल हो सकते हैं रों में जहां क्वेरी में खंड, जिसे द्वारा चयन एआरजीएस के मानों द्वारा प्रतिस्थापित किया जाएगा। मान स्ट्रिंग्स के रूप में बाध्य होंगे।

चूंकि आपके पास SQL ​​क्वेरी में कोई प्लेसहोल्डर्स नहीं है, हो सकता है कि यह समस्या का स्रोत हो।

संबंधित मुद्दे