Android:即使数据库不为空,Cursor也始终返回null

use*_*911 5 java sqlite android cursor

即使数据库不为空,Cursor也始终返回null.为什么?以及如何解决?谢谢.

 public StatParcours getOneUserInfo(int id) {
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(TABLE_USER, new String[] { KEY_USER_ID,
            KEY_STUDN , KEY_STUDBD, KEY_TEACHN, KEY_TEACHBD}, KEY_USER_ID + "=?",
            new String[] { String.valueOf(id) }, null, null, null, null);

    StatParcours stat = null;
    if ((cursor!= null)&&(cursor.moveToFirst())){      
        stat = new StatParcours(
            Integer.parseInt(cursor.getString(0)),
            cursor.getString(1), 
            cursor.getString(2),
            cursor.getString(3),
            cursor.getString(4));
    }  
    return stat ;
}      
Run Code Online (Sandbox Code Playgroud)

小智 0

你应该确保光标是否为空,如果不是,你需要确认cursor.getCount()不为零,你确定吗?

if (cursor!= null && cursor.getCount() > 0 && cursor.moveToFirst()){
    //do something
}
Run Code Online (Sandbox Code Playgroud)

如果cursor为null或cursor.getCount()为零,但数据库存在并且数据正确,您应该检测您的sql并在终端或sql客户端中运行命令来解决此问题。