我正在努力从我的数据库中按ID获取一行,并且无法弄清楚它为什么不起作用。
在我的DatabaseHelper类中,我有这段代码
public Cursor getData(String Id) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from " + BirdDB.BIRD_TABLE + "Where BIRD_ID = ?", new String[]{Id});
return res;
}
Col_0是表格中鸟类的ID。 这就是我在活动页面中的内容。
public void viewASingle() {
viewABird.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = MainActivity.myDB.getData(txt_Id.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(2) + "\n");
buffer.append("Notes : " + res.getString(3) + "\n");
buffer.append("Location : " + res.getString(4) + "\n");
buffer.append("Date And Time : " + res.getString(5) + "\n");
}
showMessage("Data", buffer.toString());
}
}
);
}
所以我确保其余代码正常工作,并且是通过Toast消息。该应用程序崩溃与rawQuery语句,我相信我做得对。我确实检查了其他堆栈溢出问题,并尝试了他们的声明,但无济于事。那么有人的想法吗?
答案 0 :(得分:3)
在"Where BIRD_ID = ?"
连结之前留一个空格,所以桌子的名字并没有坚持到这个条件。此外,我建议使用异常处理,它将帮助您调试并使您的程序更稳定