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请不要成为。我给你看了一个教你钓鱼的网站,所以不要再要求更多的鱼了。