जब आप एक स्ट्रिंग को whereArgs
. के रूप में देते हैं , एक एकल स्ट्रिंग SQL कमांड में समाप्त होती है, जैसे कि आपने यह लिखा था:
... WHERE _id IN ('1,2,42')
यह प्रत्येक _id
. की तुलना करेगा मान '1,2,42'
. के विरुद्ध मान , जो निश्चित रूप से काम नहीं करता है।
यदि आप तीन पैरामीटर मार्करों का उपयोग करते हैं और whereArgs
. में तीन स्ट्रिंग देते हैं सरणी, आप तीन स्ट्रिंग्स के साथ समाप्त होंगे, जैसे:
... WHERE _id in ('1','2','42')
यह तभी काम करता है जब _id
कॉलम में पूर्णांक एफ़िनिटी है, जो पूर्णांक प्राथमिक कुंजी के रूप में घोषित कॉलम के लिए सही है, लेकिन सामान्य स्थिति में नहीं।
एंड्रॉइड डेटाबेस एपीआई क्वेरी पैरामीटर को स्ट्रिंग के अलावा किसी भी प्रकार की अनुमति नहीं देता है। पूर्णांक का उपयोग करते समय, आपको उन्हें सीधे सम्मिलित करना चाहिए (जैसा कि ianhanniballake's answer में):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";