如何克服android sqlite where子句的问题?

问题描述 投票:0回答:1

我正在尝试从学生表中读取数据,其中学期列等于从微调器中选择的项目。 listener是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;
}

编辑

(从评论中获取的代码,用于显示所选内容的来源)

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(); 
android database android-sqlite where-clause
1个回答
0
投票

我已经解决了这个问题,我只是错过了''围绕选定的变量

这是解决方案String query =“SELECT * FROM Students WHERE semester ='”+ selected +“'”;

© www.soinside.com 2019 - 2024. All rights reserved.