Как сделать запрос базы данных sqlite с некоторыми условиями - PullRequest
0 голосов
/ 05 июня 2018

У меня есть приложение для напоминаний, в котором я хочу показать разные расписания программ.Там у меня есть четыре раздела

  1. Обзор (подробности всех расписаний)
  2. Сегодня
  3. Завтра
  4. 10 дней спустя

    Теперь я могу перечислить раздел «обзор» с помощью cursoradapter.Но я не могу перечислить «сегодня» и остальные разделы - экран остается пустым.Вот мой код todayActivity

    в oncreate () ---

        DatabaseHelper fdb = new DatabaseHelper(this);
        db = fdb.getReadableDatabase();
        cursor = db.rawQuery("select * from "+TABLE_NAME+" where "+COLUMN_DAY+" = "+day+" and "+
                COLUMN_MONTH+" = "+month+" and "+COLUMN_YEAR+" = "+year+";",null);
    
        adapter = new AppointmentAdapter(this, cursor);
        listView.setAdapter(adapter);
    

в onresume () ----

        DatabaseHelper fdb = new DatabaseHelper(this);
        SQLiteDatabase db = fdb.getReadableDatabase();
        Cursor newCursor = db.rawQuery("select * from "+TABLE_NAME+" where "+COLUMN_DAY+" = "+day+" and "+
                COLUMN_MONTH+" = "+month+" and "+COLUMN_YEAR+" = "+year+";",null);

        //RecyclerView recyclerView=findViewById(R.id.recycler);
        AppointmentAdapter adapter = (AppointmentAdapter)listView.getAdapter();

        adapter.changeCursor(newCursor);
        cursor = newCursor;

И это метод bindView в моем собственном классе адаптера курсора ----

 public void bindView(View view, Context context, Cursor cursor) {

    int drawable = 0;
    ImageView imgView = view.findViewById(R.id.type_image);
    name = cursor.getString(cursor.getColumnIndex(COLUMN_NAME));
    type = cursor.getString(cursor.getColumnIndex(COLUMN_TYPE));
    date = cursor.getString(cursor.getColumnIndex(COLUMN_DAY));
    month = cursor.getString(cursor.getColumnIndex(COLUMN_MONTH));
    year = cursor.getString(cursor.getColumnIndex(COLUMN_YEAR));
    hour = cursor.getString(cursor.getColumnIndex(COLUMN_HOUR));
    minute = cursor.getString(cursor.getColumnIndex(COLUMN_MINUTE));
    phone = cursor.getString(cursor.getColumnIndex(COLUMN_PHONE));

    if (type.equals("Health"))
        drawable = R.drawable.icons8_stethoscope_96;
    else if (type.equals("Personal"))
        drawable = R.drawable.icons8_resume_96;
    else if (type.equals("Work"))
        drawable = R.drawable.icons8_business_80;
    else if (type.equals("School"))
        drawable = R.drawable.icons8_school_80;
    else if (type.equals("Other"))
        drawable = R.drawable.icons8_exclamation_mark_48;

    imgView.setImageResource(drawable);

    TextView textView1 = view.findViewById(R.id.clock_text);
    textView1.setText(hour + ":" + minute);
    TextView textView2 = view.findViewById(R.id.date_text);
    textView2.setText(date + "-" + month + "-" + year);
    TextView textView = view.findViewById(R.id.nameText);
    textView.setText(name);
    TextView textView3 = view.findViewById(R.id.phoneText);
    textView3.setText(phone);
}

Итак, мой вопрос заключается в том, как заставить курсор пользовательского курсора узнать о определенных условиях из базы данных, которые мне нужны?Это может быть задано ранее, но я не могу найти решение проблемы.Пожалуйста, помогите мне.Заранее спасибо !!!

1 Ответ

0 голосов
/ 05 июня 2018

Попробуйте использовать db.query (), у которого в качестве параметра для условного выбора в качестве параметра выбраны selection и selectionArgs.

Cursor cursor = db.query(
    TABLE_NAME,   // The table to query
    projection,           // The array of columns to return (pass null to get all)
    selection,            // The columns for the WHERE clause
    selectionArgs,        // The values for the WHERE clause
    null,                 // don't group the rows
    null,                 // don't filter by row groups
    sortOrder             // The sort order
    );

, в вашем случае selction и selectionArgs будут:

 String selection = COLUMN_DAY+ " = ? AND"+COLUMN_MONTH+ " = ? 
 AND"+COLUMN_YEAR+" = ?";

 String[] selectionArgs = { day, month, year };

убедитесь, чтодень, месяц и год являются строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...