Android Cursor.getString(int) stuck



每当我调用这个函数时,它都会卡住,我可以追溯到它卡住的地方,但我对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;
}

只有当参数不是空或null时,Movie类才会更改标题、id等。所以一部空电影的默认标题是"未知",如果我调用setTitle( "" ),它不会改变。

因此,无论我从数据库中获得的数据发生了什么,它总是有一个标题。但当我尝试设置一个id时,cursor会卡住。什么也没发生。有人知道为什么吗?此外,是的,我得到了一个可读的数据库,并且游标不是空的。它与setId()保持一致。

我拿到这个,挠头半个小时。

cursor.getString(0)正在投掷(因此似乎卡住了(,因为它没有结果。我没有检查cursor.moveToFirst()true

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

你的代码中也有同样的错误,记得检查moveToFirst:

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

最新更新