android sqlite:来自数据库查询的游标返回空,但不应该

时间:2016-09-28 09:16:39

标签: android sqlite cursor

我正在尝试在buttonclick上过滤listview,但我的数据库查询返回一个空光标。我找不到问题所在。有人知道光标返回空的原因吗?

这是我的代码:

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

我已经尝试了两个查询,但是两个都返回一个空光标。 行正确地插入到我的数据库中,因为其他一切正常,所以这不是我问题的原因。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可能想尝试使用getText().toString();。如同这一行:

String catchword = searchText.getText().toString();