在Section String中添加任何内容会破坏android SQLite数据库查询?

时间:2012-04-04 16:43:24

标签: android database sqlite

我也是Android和SQLite的新手。我试图编写一个方法,其中DB查询从DB获取特定行。如果将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"等等,但没有运气。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

尝试下面的代码,我认为它适用于你

Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID+"=?", new String[] {"8"}, null, null, null);

答案 1 :(得分:0)

尝试以下代码:

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

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