Android Cursor.getString(int)卡住了

时间:2014-06-14 15:30:06

标签: java android sql

每当我调用此函数时,它就会卡住,我能够追溯到它停留的位置,但我是Android开发的新手,甚至是Java,所以我不知道是什么错。

public Movie getMovie( int id ){
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(TABLE_MOVIES, new String[] { KEY_ID,
            KEY_TITLE, KEY_DESCRIPTION }, KEY_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();
    else
        return null;

    //Create new movie object and fill it with data from the db
    Movie movie = new Movie();
    movie.setId( Integer.parseInt( cursor.getString(0) ) );
    movie.setTitle( cursor.getString(1) );
    movie.setDescription( cursor.getString(2) );

    return movie;
}

仅当参数不为空或Movie时,null类才会更改标题,ID等。因此,空白电影的默认标题为“#34;未知。”#34;如果我致电setTitle( "" ),它就不会改变。

因此无论我从数据库获得的数据发生了什么,它总是一个标题。但是当我尝试设置ID时,cursor卡住了。什么都没发生。谁知道为什么?此外,是的,我得到一个可读的数据库,光标不为空。它与setId()保持一致。

1 个答案:

答案 0 :(得分:0)

我得到了这个并且挠了半个小时。

cursor.getString(0)投掷(因此似乎陷入困境),因为它没有结果。我没有检查cursor.moveToFirst()true

我从未见过异常,因为这是异常处理程序调用的代码。耶。

您的代码中有相同的错误,请记得检查moveToFirst:

if (cursor == null || !cursor.moveToFirst())
    return null;
cursor.getString(0);