-3

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

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

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

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

2 回答 2

2

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

String selectQuery = "SELECT  * FROM " + table;

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

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

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

于 2013-02-10T12:55:09.657 回答
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);
    ...
}

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

制作尽可能多的功能!

于 2013-02-10T13:21:11.790 回答