2014-05-20 143 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