我有一个包含多列的数据库表
我使用自定义列表<>并从数据库填充它 我想要做的是根据用户输入过滤从数据库进入列表的内容
例如,如果我有一个这样的表:
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;
}
答案 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);
...
}
现在只需在需要时使用您的特定查询字符串
调用此函数制作任意数量的功能!