如何创建过滤器

时间:2013-02-10 12:41:09

标签: java android sql sqlite

我有一个包含多列的数据库表

我使用自定义列表<>并从数据库填充它 我想要做的是根据用户输入过滤从数据库进入列表的内容

例如,如果我有一个这样的表:

name|phone|date|address

用户可以指定任何过滤器(按名称,按电话,按日期...或全部),只有符合所有条件的项目才会进入列表

有办法做到这一点吗?

从数据库中返回所有项目的方法

public List<MoviesDatabaseEntry> getAllMovies(String table)
{
    List<MoviesDatabaseEntry> lists = new ArrayList<MoviesDatabaseEntry>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + table;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst())
    {
        do {
            MoviesDatabaseEntry list = new MoviesDatabaseEntry();
            list.set_id(Integer.parseInt(cursor.getString(0)));
            list.set_title(cursor.getString(1));
            list.set_runtime(cursor.getString(2));
            list.set_rating(cursor.getDouble(3));
            list.set_genres(cursor.getString(4));
            list.set_type(cursor.getString(5));
            list.set_lang(cursor.getString(6));
            list.set_poster(cursor.getString(7));
            list.set_url(cursor.getString(8));
            list.set_director(cursor.getString(9));
            list.set_actors(cursor.getString(10));
            list.set_plot(cursor.getString(11));
            list.set_year(cursor.getInt(12));
            list.set_country(cursor.getString(13));
            list.set_date(cursor.getInt(14));


            // Adding  to list
            lists.add(list);
        } while (cursor.moveToNext());
    }

    // return list
    db.close();
    cursor.close();
    return lists;
}

2 个答案:

答案 0 :(得分:2)

您可以过滤在此行中构建的SQL查询中获得的条目:

String selectQuery = "SELECT  * FROM " + table;

要过滤检索的数据集,您需要为其添加WHERE子句。例如,当您只想要那些评级超过3的条目时,您可以将其更改为:

String selectQuery = "SELECT  * FROM " + table + " WHERE rating > 3";

SQL是一种非常强大的语言,它提供了很多可能性。使用关系数据库时,这是一项基本技能。如果您想学习它,我可以向您推荐互动教程网站http://sqlzoo.net/

答案 1 :(得分:0)

您必须更改数据库查询才能从查询中获取特定数据。

您有一个函数可以返回数据库中的所有行,如下所示:getAllMovies(String table)

您正在使用:

String selectQuery = "SELECT  * FROM " + table;

制作一个像这样的新功能:

public List<MoviesDatabaseEntry> getSelectedMovies(String table)
{
    List<MoviesDatabaseEntry> lists = new ArrayList<MoviesDatabaseEntry>();

    Cursor cursor = db.query(true, TABLE_NAME, new String[] { <your row names> }, 
                **check condition(as string)**, null,
                null, null, null, null);
    ...
}

现在只需在需要时使用您的特定查询字符串

调用此函数

制作任意数量的功能!