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