आप तैयार किए गए कथन में किसी सूची को किसी एकल पैरामीटर से बाइंड नहीं कर सकते हैं।
सूची में प्रत्येक तत्व के लिए पैरामीटर मार्कर के साथ SQL उत्पन्न करें, उदाहरण के लिए:
SELECT NAME FROM ITEM WHERE ID IN (?, ?, ?, ?)
भले ही आप प्रत्येक क्वेरी के लिए एक नया स्टेटमेंट जेनरेट करेंगे, फिर भी मैं PreparedStatement
का उपयोग करने की सलाह दूंगा . अगर आपकी सूची में String
है उदाहरण के लिए, आपको SQL इंजेक्शन से बचाने के लिए आवश्यक एस्केपिंग मिल जाएगी।
लेकिन भले ही यह एक सुरक्षित प्रकार हो, जैसे Integer
ऑब्जेक्ट्स, कुछ ड्राइवर या मिडलवेयर कैश कर सकते हैं PreparedStatements
, और यदि उसी फॉर्म का अनुरोध किया जाता है तो कैश्ड इंस्टेंस लौटाएं। बेशक, कुछ परीक्षण आवश्यक होंगे। यदि आपकी सूचियां आकार में व्यापक रूप से भिन्न हैं, तो आपके पास कई अलग-अलग कथन होंगे, और खराब तरीके से कार्यान्वित कैश इतने सारे को संभालने के लिए तैयार नहीं हो सकता है।