2012-02-08 12 views
21

मानों का उपयोग करके मैं एक SQLite क्वेरी निष्पादित करने के लिए चाहते हैं खंड में SQLite: में खंड में तार की एक सरणी से लिया जाना चाहिए
एंड्रॉयड - सरणी

select * from table_name where id in (23,343,33,55,43); 

मान:

String values[] = {"23","343","33","55","43"} 

मैं इसे कैसे प्राप्त कर सकता हूं?

10X!

उत्तर

32

मैं एक साधारण toString() ज्यादातर चाल करना होगा विश्वास करते हैं:

String values[] = {"23","343","33","55","43"}; 
String inClause = values.toString(); 

//at this point inClause will look like "[23,343,33,55,43]" 
//replace the brackets with parentheses 
inClause = inClause.replace("[","("); 
inClause = inClause.replace("]",")"); 

//now inClause will look like "(23,343,33,55,43)" so use it to construct your SELECT 
String select = "select * from table_name where id in " + inClause; 
+0

10X, यह काम करता है :) –

+1

यदि आपका मूल्यों के कुछ उपयोगकर्ता इनपुट से आते हैं आप संभव SQL इंजेक्शन हमले करने के लिए या कम से कम दुर्घटनाओं में खुले हैं। एसक्यूएल स्टेटमेंट में उपयोगकर्ता इनपुट डालने से पहले आपको 'DatabaseUtils.html # sqlEscapeString (java.lang.String)' और संबंधित फ़ंक्शंस को देखना चाहिए। – satur9nine

+1

आपको यह सुनिश्चित करना चाहिए कि इस स्थान को करने से पहले आपके किसी भी मान में [या] शामिल न हो। पहले और आखिरी पात्रों के बीच सबस्ट्रिंग को लेना और बेहतर तरीका होगा (और) – SDJMcHattie