使用LIKE的Android SQLiteDatabase查询

在我的名字表中有3个名字,Allakhazam,Beatbox和狡猾。

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; } 

我用“A”作为filter调用该函数,但是当它至less应该返回1时,我的游标正在返回0计数。任何人都可以看到代码出了什么问题?

Solutions Collecting From Web of "使用LIKE的Android SQLiteDatabase查询"

这个语句将返回keyname等于string指定string的所有logging,如果你使用通配符,那么你可以得到想要的结果。 喜欢:

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

将列出在filter中以word开始的所有logging。

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

将列出在filter中包含单词的所有logging。

你可以试试这个…..代码…….

 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); } 
  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); } 

你应该用通配符给filter;)

 "A%"