Как создать фильтр

-3

У меня есть таблица базы данных с несколькими столбцами

Я использую собственный список <> и заполняю его из базы данных
То, что я хочу сделать, это фильтр, который войдет в список из базы данных в зависимости от пользовательского ввода

например, если бы у меня была таблица вроде этого:

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
    конечно, но в вашем вопросе отсутствуют важные детали. Какую базу данных вы используете и как выглядит код запроса вашей базы данных?
  • 0
    sqlite в андроиде, что вы имеете ввиду запрос к базе данных. У меня есть метод для извлечения элементов из базы данных. Это то, что вы имели ввиду?
Показать ещё 2 комментария
Теги:

2 ответа

2
Лучший ответ

Вы можете отфильтровать записи, которые вы получаете в SQL-запросе, который вы строите в этой строке:

String selectQuery = "SELECT  * FROM " + table;

Чтобы отфильтровать полученный набор данных, вы должны добавить к нему предложение WHERE. Например, если вам нужны только те записи, где рейтинг превышает 3, вы должны изменить это на:

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

SQL - очень мощный язык, который предлагает множество возможностей. Это важный навык при работе с реляционными базами данных. Когда вы захотите изучить его, я могу порекомендовать вам интерактивный учебный веб-сайт http://sqlzoo.net/

  • 0
    ОК, а как насчет нескольких фильтров?
  • 1
    вы просто добавляете следующее условие в предложение where ... где column1> 1 и column2 = 'somestring' ...
Показать ещё 2 комментария
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);
    ...
}

Теперь просто вызовите эту функцию, когда требуется, с вашей конкретной строкой запроса

Сделайте столько функций, сколько хотите!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню