2014-05-20 148 views
0

我無法使用'like'來顯示相應的產品以搜索包含相關單詞的產品名稱。SQLite LIKE搜索

String sql = "SELECT "+WPTemplateDB.PRODUCT_TABLE+".*" 
        +" FROM "+WPTemplateDB.PRODUCT_TABLE+" product" 
        +" JOIN "+WPTemplateDB.CATEGORY_TABLE+" cat" 
        +" ON product."+WPTemplateDB.PRODUCT_ID+"= cat."+WPTemplateDB.PRODUCT_ID 
        +" WHERE "+column+" "+(column==WPTemplateDB.TITLE?"LIKE":"=")+" ?"; 
     Log.d("sql", sql); 
     Log.d("query",(column==WPTemplateDB.TITLE?("%"+query+"%"):query)); 
     Cursor cursor = db.rawQuery(sql, new String[]{(query==WPTemplateDB.TITLE?"%"+query+"%":query)}); 
     Log.d("count", cursor.getCount()+""); 
     if (cursor.getCount()>0){ 
      while (cursor.moveToNext()){ 
       Log.d("product", cursor.getInt(cursor.getColumnIndex(WPTemplateDB.PRODUCT_ID))+""); 
       Product product = new Product(cursor.getInt(cursor.getColumnIndex(WPTemplateDB.PRODUCT_ID)), db); 
       gridProduct.add(product); 
      } 

      return gridProduct; 
     } else { 
      return new ArrayList<Product>(); //avoid returning null 
     } 

當我搜索標題只是一個字符「a」(這肯定存在一個‘產品有一個標題’),日誌顯示它正確地轉換爲%A%但伯爵出來0,什麼都沒有搜索........當這個來與'='不'喜歡'它是工作!爲什麼??

回答

1

它看起來像這條線是不正確的:

Cursor cursor = db.rawQuery(sql, new String[]{(query==WPTemplateDB.TITLE?"%"+query+"%":query)}); 

你應該進行比較WPTemplateDB.TITLE如你在代碼前面的行,像這樣:

Cursor cursor = db.rawQuery(sql, new String[]{(column==WPTemplateDB.TITLE?"%"+query+"%":query)}); 
+0

多麼愚蠢的錯誤,我已經讓XD,thx – Simon