2010-08-28 16 views
8

में काम नहीं कर रहा है, मैं एंड्रॉइड ऐप में खोज में वाइल्डकार्ड का उपयोग करने की कोशिश करता रहता हूं, और त्रुटियों में चल रहा हूं।वाइल्डकार्ड SQLite

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" }, 
       "name LIKE %?%", new String[] { query }, null, null, null); 

जब मैं का उपयोग name LIKE %?% या name=%?% मैं एक "पास"% ": सिंटेक्स त्रुटि: है, जबकि संकलन:

मैं नीचे स्ट्रिंग का उपयोग अपने आवेदन पर कोई खोज करते रहा हूँ _ id का चयन करें, namerxns से नाम कहां नाम =%?% "त्रुटि।

लेकिन name LIKE '%?%' या name='%?%' मैं बजाय "बाँध या स्तंभ अनुक्रमणिका सीमा से बाहर: संभाल 0x40cb70" मिल के साथ

सका किसी कृपया मुझे बताओ क्या मैं गलत कर रहा हूँ?

धन्यवाद!

+2

क्वेरी में होने के बजाय, चर के लिए वाइल्डकार्डिंग को पारित करने के बारे में क्या? –

+0

पूरी तरह से काम करता है, धन्यवाद! यह मेरे लिए थोड़ा मूर्खतापूर्ण लगता है, लेकिन कभी भी बुरा मत मानो। यदि आप इसे उत्तर के रूप में रखते हैं तो मुझे आपको टिक करने में खुशी होगी :) –

+1

हालांकि सही के बारे में लगता है। बाउंड स्ट्रिंग पैरामीटर में मूल रूप से उद्धरण और सामान डाले जाएंगे, इसलिए आप नाम =% 'डेविड'% जैसे कुछ के साथ समाप्त हो सकते हैं जो अमान्य SQL है। मेरा एसक्यूएल ज्ञान बिल्कुल बराबर नहीं है, इसलिए मैं जो कह सकता हूं उससे थोड़ा और काम किया गया है, लेकिन इससे आपको यह विचार करना चाहिए कि ओएमजी टट्टू के वर्णन के रूप में इसे क्यों किया जाना है। –

उत्तर

25

%query पैरामीटर में जोड़ें।

यानी .:

Cursor c_name = b.query("namedrxns", new String[] { "_id", "name" }, 
      "name LIKE ?", new String[] { "%"+query+"%" }, null, null, null); 

तरह थॉमस मुलर ने पहले ही कहा, कृपया ध्यान दें कि % और _ मूल्य के भीतर अभी भी वाइल्ड कार्ड के रूप में काम करते हैं।

+0

पूरा मूल्य 'क्वेरी' बच निकला है और '' के बीच रखा गया है, इसलिए आपका% इसके साथ होना चाहिए – njzk2

5

निम्नलिखित काम करना चाहिए (लेकिन मैं SQLite के साथ यह परीक्षण नहीं किया है):

"name LIKE '%' || ? || '%'" 

कृपया ध्यान दें कि "%" और "_" मूल्य के भीतर अभी भी वाइल्ड कार्ड के रूप में काम करते हैं।

+0

धन्यवाद, इसे सर्वरसाइड पर काम करने के लिए CONCAT का उपयोग किया जाता है, लेकिन मेरे एंड्रॉइड डिवाइस पर SQLite में काम नहीं करेगा। यह मेरे लिए ऐसा करने का सही तरीका था। – CounterFlame

+0

ऊपर से "OR" कैसे जोड़ें? स्पष्ट रूप से जोड़ा गया काम नहीं करता .. – Ryde