2014-07-17 6 views
7

मुझे नीचे दिए गए फ़ंक्शन को निष्पादित करते समय ऊपर दिए गए IllegalArgumentException प्राप्त होते हैं। मुझे जो नहीं मिलता है वह यह है कि जब मैं डीबगर चलाता हूं, मान परिवर्तनीय स्पष्ट रूप से केवल 4 तर्क होते हैं, जैसा कि इसे करना चाहिए।बहुत सारे बाध्य तर्क। 5 तर्क प्रदान किए गए थे लेकिन कथन को 4 तर्कों की आवश्यकता है

तो ...

(1) कहाँ इस रहस्यमय पांचवें तर्क से आता है?

(2) मुझे इस त्रुटि को कैसे ढूंढना चाहिए? स्ट्रिंग चयन = "_ id";:

db.update(
    UppdragEntry.TABLE_NAME, 
    values, 
    selection, 
    selectionArgs); 
+0

* चयन * में निम्नलिखित शामिल हैं: स्ट्रिंग चयन = "_id"; स्ट्रिंग [] selectArgs = {"=" + personId}; – abc32112

उत्तर

34

चयन निम्नलिखित शामिल स्ट्रिंग [] selectArgs = {"=" + personId};

आप selectionArgs में एक मूल्य है, लेकिन selection में इसके लिए कोई ? प्लेसहोल्डर है।

String selection = "_id = ?"; 
String[] selectionArgs = { "" + personId }; 

विधि को बदलें यह एक एसक्यूएल स्ट्रिंग बनाता है। आपूर्ति ContentValues? प्लेसहोल्डर के रूप में निर्मित हैं और तर्कों को बाध्य करते हैं। अतिरिक्त चयन तर्क बाध्य तर्क के रूप में भी प्रदान किए जाते हैं और उन्हें ? प्लेसहोल्डर के बराबर संख्या से मेल खाना चाहिए।

+0

काम करता है, धन्यवाद! – abc32112

+1

मेरे पास था? चयन ARRgs में लेकिन स्ट्रिंग के मामले में मैं परिवर्तित? '?' में जो एक गलती थी। –

+0

ठीक है, चयन Args में String.valueOf (personId) जोड़ने के लिए यह बेहतर है। – SanchelliosProg

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