每当我调用此函数时,它就会卡住,我能够追溯到它停留的位置,但我是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()
保持一致。
答案 0 :(得分:0)
我得到了这个并且挠了半个小时。
cursor.getString(0)
投掷(因此似乎陷入困境),因为它没有结果。我没有检查cursor.moveToFirst()
是true
。
我从未见过异常,因为这是异常处理程序调用的代码。耶。
您的代码中有相同的错误,请记得检查moveToFirst:
if (cursor == null || !cursor.moveToFirst())
return null;
cursor.getString(0);