【发布时间】:2016-09-28 09:16:38
【问题描述】:
我正在尝试在 buttonclick 上过滤列表视图,但我的数据库查询返回一个空光标。我找不到问题出在哪里。有人知道为什么光标返回空吗?
这是我的代码:
private void initSearch() {
searchText = (EditText) findViewById(R.id.search_edit_text);
ImageButton searchEntry = (ImageButton) findViewById(R.id.button_search_entry);
searchEntry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
view.startAnimation(buttonAnimation);
String catchword = searchText.toString();
if (catchword.equals("")) {
Toast.makeText(SearchActivity.this, noCatchword, Toast.LENGTH_LONG).show();
} else {
Cursor match = myDb.getWordMatches(catchword); //cursor is empty
cursorAdapter.swapCursor(match);
cursorAdapter.notifyDataSetChanged();
}
}
});
}
这里是数据库方法:
public Cursor getWordMatches(String query) {
//Cursor c = database.rawQuery("SELECT * FROM "+TABLE_NAME+ " WHERE "+COL_HEAD+ " = '%" +query+"%' OR " +COL_TEXT+ " = '%"+query+"%'", null);
Cursor c = database.rawQuery("SELECT * FROM " + TABLE_NAME+ " WHERE "+COL_HEAD+ " LIKE ? OR "+COL_TEXT+ " LIKE ?", new String[]{query});
if(c != null){
c.moveToFirst();
}
return c;
}
如您所见,我已经尝试了这两个查询,但都返回一个空游标。 这些行已正确插入到我的数据库中,因为其他一切正常,所以这不是我的问题的原因。
提前致谢!
【问题讨论】:
-
在您的
selectionArgs中尝试"%"+query+"%" -
您是否尝试过手动将 SQL 语句直接执行到数据库的命令界面中?
-
@pskink:仍然返回空光标
-
试试这个
Cursor c = database.rawQuery("SELECT * FROM " + TABLE_NAME+ " WHERE "+COL_HEAD+ " LIKE ? OR "+COL_TEXT+ " LIKE ?", new String[]{query,query}); -
@user1506104 不,我不知道它是如何工作的