Java 如何创建过滤器

Java 如何创建过滤器,java,android,sql,sqlite,Java,Android,Sql,Sqlite,我有一个包含多列的数据库表 我使用自定义列表并从数据库填充它 我想做的是根据用户输入过滤从数据库进入列表的内容 例如,如果我有一张这样的桌子: name|phone|date|address 用户可以指定任何过滤器(按名称、电话、日期…或全部),只有符合所有条件的项目才会进入列表 有办法做到这一点吗 方法返回数据库中的所有项 public List<MoviesDatabaseEntry> getAllMovies(String table) { List<Movie

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

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

例如,如果我有一张这样的桌子:

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;
}
公共列表getAllMovies(字符串表)
{
List lists=新建ArrayList();
//选择所有查询
String selectQuery=“SELECT*FROM”+表格;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(cursor.moveToFirst())
{
做{
MoviesDatabaseEntry列表=新建MoviesDatabaseEntry();
set_id(Integer.parseInt(cursor.getString(0));
list.set_title(cursor.getString(1));
set_运行时(cursor.getString(2));
list.set_评级(cursor.getDouble(3));
list.set_类型(cursor.getString(4));
list.set_类型(cursor.getString(5));
list.set_lang(cursor.getString(6));
list.set_poster(cursor.getString(7));
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));
//添加到列表中
列表。添加(列表);
}while(cursor.moveToNext());
}
//返回列表
db.close();
cursor.close();
退货清单;
}

您可以筛选此行中生成的SQL查询中的条目:

String selectQuery = "SELECT  * FROM " + table;
要过滤您检索的数据集,您需要向其中添加WHERE子句。例如,当您只想要评级超过3的条目时,您可以将其更改为:

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

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

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

有一个函数可以像这样返回数据库中的所有行:
getAllMovies(字符串表)

您使用的是:

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);
    ...
}
公共列表getSelectedMovies(字符串表)
{
List lists=新建ArrayList();
Cursor Cursor=db.query(true,表名,新字符串[]{},
**检查条件(作为字符串)**,空,
空,空,空,空);
...
}
现在,只需在需要时使用特定的查询字符串调用此函数


尽可能多的功能,你想

当然可以,但你的问题缺乏重要的细节。您使用的是什么数据库?您的数据库查询代码看起来如何?在android中,sqlite是什么意思。我有一个从数据库检索项目的方法。这就是您的意思吗?当您使用sqlite时,您肯定在某处有一个SQL查询(“SELECT*FROM table;”)。或者您正在使用某种框架来访问数据库?请将访问数据库的代码添加到您的问题中。使用该方法更新问题确定,多个筛选器如何?您只需在where子句中添加下一个条件。。。其中column1>1和column2='somestring'…@pedja请不要成为。我给你看了一个教你钓鱼的网站,所以不要再要求更多的鱼了。