LIKE

2012-01-31 19 views
25

के साथ एंड्रॉइड SQLiteDatabase क्वेरी मेरे नाम तालिका में 3 नाम, अलाखज़म, बीटबॉक्स और चालाक हैं।LIKE

public Cursor fetchNamesByConstraint(String filter) { 

    mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID, 
      KEY_NAME }, KEY_NAME + " LIKE ?", 
      new String[] { filter }, null, null, null, 
      null); 

    return mCursor; 
} 

मैं फिल्टर के रूप में 'ए' के ​​साथ फ़ंक्शन को कॉल करें, लेकिन मेरे कर्सर एक 0 गिनती लौटा रहा है जब यह कम से कम मुझे एक 1. किसी को भी देख सकते हैं कि कोड के साथ गलत क्या है लौट जाना चाहिए?

उत्तर

75

यह कथन उन सभी रिकॉर्ड्स को वापस कर देगा जिनके कुंजीनाम स्ट्रिंग द्वारा निर्दिष्ट स्ट्रिंग के बराबर हैं, यदि आप वाइल्ड कार्ड का उपयोग करते हैं, तो आप वांछित परिणाम प्राप्त कर सकते हैं। पसंद:

mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID, 
      KEY_NAME }, KEY_NAME + " LIKE ?", 
      new String[] { filter+"%" }, null, null, null, 
      null); 

फिल्टर में शब्द के साथ शुरू होने वाले सभी रिकॉर्ड सूचीबद्ध करेगा।

mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID, 
      KEY_NAME }, KEY_NAME + " LIKE ?", 
      new String[] {"%"+ filter+ "%" }, null, null, null, 
      null); 

फिल्टर में शब्द वाले सभी रिकॉर्ड सूचीबद्ध करेगा।

+0

धन्यवाद, ऐसा किया यह मेरे लिए, मैं गलत जगह पर देख रहा था। – Maurice

+0

इससे मुझे बहुत मदद मिलती है और धन्यवाद। –

+0

हमें उपरोक्त कोड में फ़िल्टर में% प्रतीक जोड़ने की आवश्यकता क्यों है? @jeet –

2

आप वाइल्डकार्ड के साथ फिल्टर देना चाहिए;)

"A%" 
+0

android.database.sqlite.SQLiteExlite.SQLiteException: "%" के नजदीक: वाक्यविन्यास त्रुटि: संकलन करते समय: DISTINCT _ID, nid, नामों का नाम कहां से नाम%?% जब मैं "पसंद?%" – Maurice

+0

जोड़ता हूं तो यह त्रुटि प्राप्त करना सिंगल कोट्स के साथ अपने तारों को लपेटने के लिए – rsaxvc

3
public java.util.Vector<Products> getsearch(String subcategory,String searchby) 
    { 
     SQLiteDatabase db=this.getReadableDatabase(); 

     Cursor cursor = db.query(
      TABLE_PRODUCTS, 
      new String[] { SUBCATEGORY, MAIN_CATEGORY, PRODUCT_ID, PRODUCT_NAME, BRAND, PACKAGE_SIZE, PRICE }, 
      SUBCATEGORY + " LIKE '%" + subcategory + "%'", 
      null, null, null, null, null); 
    } 
4

आप इस ..... कोड की कोशिश कर सकते हैं .......

public static final String KEY_ROWID="row"; 
public static final String KEY_NAME="name"; 

public Cursor fetchNamesByConstraint(String filter) { 

    Cursor cursor=mDb.query(true, DATABASE_NAMES_TABLE, null,"row LIKE '%"+filter+"%' or name LIKE '%"+filter+"%'",null, null, null, null); 

    } 
+2

बिना पैरामीटर बाध्यकारी कोड एसक्यूएल इंजेक्शन भेद्यता – Alfishe

+0

के साथ असुरक्षित हो गया है, मुझे खेद नहीं है। –

+2

मैं सिर्फ फिल्टर = "मानदंड%" पास करूंगा; ड्रोप डाटाबेस .....; चयन करें * तालिका से 'पंक्ति मानदंड' की तरह पंक्ति – Alfishe

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