奇怪的 nullPointerException 错误 - 数据库相关

Posted

技术标签:

【中文标题】奇怪的 nullPointerException 错误 - 数据库相关【英文标题】:Strange nullPointerException error - database related 【发布时间】:2012-04-08 16:21:00 【问题描述】:

我正在学习如何使用 sqlite 数据库,并尝试在我制作的游戏中实现高分系统。当我尝试显示分数时读取行有效,但是当我尝试使用相同的想法读取值以在以下方法中比较它们时 - 它给出了空指针异常错误。

private void checkIfHighScore(int currentScore) 
    Cursor note;
    int rowScore;
    String moveName, moveScore, newName;

    for (long i=1;i<6;i++)
        note = mDbHelper.fetchNote(i);
        startManagingCursor(note);
        rowScore=Integer.parseInt(note.getString(note.getColumnIndexOrThrow(ScoresDbAdapter.KEY_BODY)));
        if (currentScore<rowScore)
            for (long j=5;j>i;j--)
                note = mDbHelper.fetchNote(j-1);
                startManagingCursor(note);
                moveName=note.getString(note.getColumnIndexOrThrow(ScoresDbAdapter.KEY_TITLE));
                moveScore=note.getString(note.getColumnIndexOrThrow(ScoresDbAdapter.KEY_BODY));
                mDbHelper.updateNote(j, moveName, moveScore);
            
            newName="a"; //for testing 
            mDbHelper.updateNote(i, newName, Integer.toString(currentScore));
            break;
        
    


我知道错误出现在 for 循环之后的行 - 但我不知道是什么导致它失败。我的数据库有 5 行数据(已验证)。 有谁知道是什么导致我的错误?一直把我的头撞在墙上2个小时。谢谢!

【问题讨论】:

mDbHelper 是如何声明和初始化的? 可能是:mDbHelper 未初始化,或mDbHelper.fetchNote(i) 返回 null(我们没有相应的代码),请添加 log cat 和更多代码以便我们提供帮助跨度> mDbHelper = new ScoresDbAdapter(this); mDbHelper.open();还请记住,我使用相同的命令(fetchNote)以另一种方法从数据库中读取,所以它很可能运行良好。 谢谢,我找到了解决方案——我在用另一种方法调用它之后声明了 mDbHelper,所以在需要它的时候没有声明它。傻我。谢谢! 太棒了!友情提示,您能否自行发布问题的答案,然后接受该答案,以便我们关闭此问题?此外,如果他们解决了您的问题,您需要接受之前问题的答案。 【参考方案1】:

除了您拥有的代码之外,您还可以执行类似

的操作
String selectQuery = "SELECT MAX(COLUMN_NAME) FROM " + TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if(cursor.moveToFirst()
   rowScore = Integer.parseInt(cursor.getString(0);
   if(rowScore < currentScore)
       //you have a new high score
    

通过这种方式,您可以利用 SQLite 附带的预定义函数,这些函数速度更快,并且可以节省一些工作。

【讨论】:

以上是关于奇怪的 nullPointerException 错误 - 数据库相关的主要内容,如果未能解决你的问题,请参考以下文章

NullPointerException 创建数组?

ConcurrentHashMap 产生NullPointerException

NullPointerException 而不是 null(JVM 错误?)

来自 CriteriaBuilder 的 EclipseLink NullPointerException

Unmarshal NullPointerException(带有 JAXB 参考实现)

R8:IR 转换期间出现 NullPointerException