java - Android Sqlite 操作

标签 java android database android-sqlite android-cursoradapter

我想执行搜索操作。我正在使用 CursorAdapter 显示数据库中的数据。这是我的代码

数据库助手

public Cursor fetchDataByName(String string) {
        // TODO Auto-generated method stub

        Cursor cursor = database.rawQuery("select  ABSTRACTS_ITEM._id,ABSTRACTS_ITEM.TITLE,ABSTRACTS_ITEM.TOPIC, "
                + "ABSTRACTS_ITEM.TYPE,ABSTRACTS_ITEM.TEXT"
                + "ABSTRACT_KEY_WORDS.KEYWORDS "
                + "from ABSTRACTS_ITEM,ABSTRACT_KEY_WORDS "
                + "where ABSTRACTS_ITEM._id = ABSTRACT_KEY_WORDS._id "
                + "and ABSTRACT_KEY_WORDS.KEYWORDS like '%" + string + "%'"
                + "or ABSTRACTS_ITEM.TITLE like '%" + string + "%'", null);
        return cursor;
    }

内部 Activity

cursorAdapter.setFilterQueryProvider(new FilterQueryProvider() {
            public Cursor runQuery(CharSequence constraint) {
                return dbHelper.fetchDataByName(constraint.toString());
            }
        });

以前,我只能使用 Title 搜索数据。现在,我想要根据标题或关键字搜索数据。正如你所看到的,我的查询,尝试过。但是,它不起作用。因为,它什么也没显示。

最佳答案

您缺少 , 逗号,并且需要将 OR 条件分组在括号中,因为 AND 具有更高的优先级。

Cursor cursor = database.rawQuery("select ABSTRACTS_ITEM._id, "
        + "ABSTRACTS_ITEM.TITLE, ABSTRACTS_ITEM.TOPIC, "
        + "ABSTRACTS_ITEM.TYPE, ABSTRACTS_ITEM.TEXT, " // <-- Comma needed
        + "ABSTRACT_KEY_WORDS.KEYWORDS "
        + "from ABSTRACTS_ITEM,ABSTRACT_KEY_WORDS "
        + "where ABSTRACTS_ITEM._id = ABSTRACT_KEY_WORDS._id "
          // Group the OR condition with "()"; AND has higher precedence
        + "and (ABSTRACT_KEY_WORDS.KEYWORDS like '%" + string + "%' "
        + "or ABSTRACTS_ITEM.TITLE like '%" + string + "%')", null);

关于java - Android Sqlite 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18778335/

相关文章:

php - 从具有多行的关系表中获取数据

android - 检视正确的答案

Mysql 和 C 集成

java - 如何知道 Jsoup 删除了哪些文本?

java - 如何从php页面获取数据(没有json)?

android - QR 码在 Android 中不起作用

未为超链接加载的 Android webview 内容包含哈希

java - Xuggler 和直播

java - 如何从 bean 动态调用方法

Java检测文件系统的变化