来自Android中SQLite数据库的单行

时间:2016-04-11 01:26:19

标签: android android-sqlite

我正在努力从我的数据库中按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语句,我相信我做得对。我确实检查了其他堆栈溢出问题,并尝试了他们的声明,但无济于事。那么有人的想法吗?

1 个答案:

答案 0 :(得分:3)

"Where BIRD_ID = ?"连结之前留一个空格,所以桌子的名字并没有坚持到这个条件。此外,我建议使用异常处理,它将帮助您调试并使您的程序更稳定