我正在尝试从学生表中读取数据,其中学期列等于从微调器中选择的项目。 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();
我已经解决了这个问题,我只是错过了''围绕选定的变量
这是解决方案String query =“SELECT * FROM Students WHERE semester ='”+ selected +“'”;