как побороть проблему андроида sqlite где пункт? - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь прочитать данные из таблицы студентов, где столбец семестра равен элементу, выбранному из счетчика. слушатель - spinner.setOnItemSelectedListener. проблема в том, что он останавливает активность, когда я выбираю элемент счетчика. Он работает нормально, когда я удаляю WHERE CLAUSE. , но я должен использовать WHERE CLAUSE. Пожалуйста помоги.

    public ArrayList<HashMap<String, String>> GetAllStudents(){
        ArrayList<HashMap<String, String>> userList = new ArrayList<>();
        try{
            SQLiteDatabase db = MyDB.getInstance(this).getReadableDatabase();


        String query = "SELECT * FROM Students WHERE semester="+selected;
        Cursor cursor = db.rawQuery(query,null);
        if(cursor.moveToFirst()) {
            while (cursor.moveToNext()) {
                HashMap<String, String> user = new HashMap<>();
                user.put("name", cursor.getString(0));
                user.put("roll", cursor.getString(1));
                user.put("semester", cursor.getString(2));
                user.put("pass", cursor.getString(3));
                userList.add(user);
            }
        }

    }
    catch (Exception e){
        Toast.makeText(this, "Error "+selected, Toast.LENGTH_SHORT).show();
    }
    return  userList;
}

EDIT

(код взят из комментариев, чтобы показать, откуда выбран исходит от)

String selected; 
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {    
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
        selected=parent.getItemAtPosition(position).toString();
        loadStudents();
    }

    public void onNothingSelected(AdapterView<?> parent) { 
    }
});

loadStudents(); 

1 Ответ

0 голосов
/ 13 сентября 2018

Я решил эту проблему, я просто пропустил '' вокруг выбранной переменной

Это решение Строковый запрос = "ВЫБРАТЬ * ИЗ СТУДЕНТОВ, ГДЕ semester = '" + selected + "'";

...