-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

クエリから特定のデータを取得するには、データベース クエリを変更する必要があります。

次のように、データベースからすべての行を返す関数が 1 つあります。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 に答える