Android (sqlite) Как просмотреть данные с помощью предложения where? - PullRequest
0 голосов
/ 12 мая 2019

Я делаю приложение, которое требует от вас ввода идентификатора. Если в этом идентификаторе хранятся данные, оно будет отображаться с помощью alerttdialog. Моя проблема заключается в том, что когда я нажимаю [Просмотр введенного идентификатора №.], если есть данные, ничего не происходит, но когда я нажимаю [Просмотр всех данных], отображаются все сохраненные идентификатор и информация.

мой запрос к DatabaseHelper: (COL_1) это идентификатор

public Cursor getOneData(String id){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor result = db.rawQuery("select * from " +TABLE_NAME+ " where " +COL_1+ " = ? ",new String[]{id});
        return result;
    }

мой код кнопки просмотра: (txtNum - это EditText для идентификатора)


        btnView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor res = myDb.getOneData(txtNum.getText().toString());
                if(res.getCount()==0){
                    showMessage("Error","Nothing found");
                    return;
                }
                StringBuffer buffer = new StringBuffer();
                while(res.moveToNext()){
                    buffer.append("ID: "+ res.getString(0)+"\n");
                    buffer.append("Name: "+ res.getString(1)+"\n");
                    buffer.append("Surname: "+ res.getString(2)+"\n");
                    buffer.append("Marks: "+ res.getString(3)+"\n\n");
                }
            }
        });

когда нажата кнопка просмотра, я ожидаю, что на выходе отобразится информация о введенном идентификационном номере.

1 Ответ

0 голосов
/ 12 мая 2019

Короче говоря, вы говорите ему ничего не делать, когда извлекается строка, все, что вы делаете, это получаете значения в буфер вызова объекта String buffer.Вы ничего не делаете с этими данными перед возвратом, и, следовательно, извлеченные данные теряются, поскольку буферный объект больше не существует.

Если вы сделали (в качестве примера):

    btnView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Cursor res = myDb.getOneData(txtNum.getText().toString());
            if(res.getCount()==0){
                showMessage("Error","Nothing found");
                return;
            }
            StringBuffer buffer = new StringBuffer();
            while(res.moveToNext()){
                buffer.append("ID: "+ res.getString(0)+"\n");
                buffer.append("Name: "+ res.getString(1)+"\n");
                buffer.append("Surname: "+ res.getString(2)+"\n");
                buffer.append("Marks: "+ res.getString(3)+"\n\n");
            }
            Toast.makeText(v.getContext(),"Here is my data:- " + buffer.toString(),Toast.LENGTH_SHORT).show(); //<<<<<<<<<< ADDED
        }
    });

Тогда длякраткий период извлеченные данные будут показаны.

Скорее всего, вы захотите сделать что-то еще с извлеченными данными, приведенное выше является просто демонстрацией того, что данные будут извлечены (при условии, что по запросу извлечено 4 столбца).

Что еще вы делаете и как вы это делаете, будет зависеть от кода, который не является частью задаваемого вопроса, поэтому, если у вас возникли проблемы с этим аспектом, вам следует задать другой вопрос.

...