0

我也是 Android 和 SQLite 的新手。我正在尝试编写一种方法,其中数据库查询从数据库中获取特定行。此版本的方法在 Selection 设置为 null 的情况下运行良好:

    public String anotherTry(){
        String[] columns = new String[]{ KEY_SDATE, KEY_SC, KEY_VE };
        Cursor cursor = db.query(DATABASE_TABLE, columns, null, null, null, null, null);
        String result = "";
        if (cursor != null){
            cursor.moveToFirst();
            result = result
        + cursor.getString(0) + "\n"
        + cursor.getString(1) + "\n"
            + cursor.getString(2) + "\n";
            return result;
        }
        return null;
    }

但如果我在 Selection 参数中添加任何内容,它就会崩溃。例如:

    public String anotherTry(){
        String[] columns = new String[]{ KEY_SDATE, KEY_SC, KEY_VE };
        Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + "8", null, null, null, null);
        String result = "";


        if (cursor != null){
            cursor.moveToFirst();
            result = result
        + cursor.getString(0) + "\n"
        + cursor.getString(1) + "\n"
            + cursor.getString(2) + "\n";
            return result;
        }
        return null;
    }

这里出了什么问题?我正在尝试显示第 8 行。我已经尝试了所有我能想到的格式组合:KEY_ROWID + "=" + "8"、KEY_ROWID = "8" 等等,但没有运气。谢谢你的帮助!

4

2 回答 2

0

尝试followin代码,我认为它会为你工作

Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID+"=?", new String[] {"8"}, null, null, null);
于 2012-04-04T17:22:42.530 回答
0

试试下面的代码:

Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID + "=8", null, null, null, null);

或者我认为 KEY_ID=8 处的数据库中不存在任何内容,因为当查询没有返回数据时会出现 CursorIndexOutOfBounds 异常。检查数据库是否存在于 KEY_ROWID=8

于 2012-04-04T18:52:47.710 回答