在SQLite帮助程序中使用COUNT()计算行数时发生NullPointerException

时间:2013-09-27 07:31:53

标签: java android sqlite

我在SQLite中执行NUNTPointerException以执行COUNT()。请参阅以下代码 -

public int getrcofpersons() {
    // TODO Auto-generated method stub
    SQLiteDatabase myDB;
    int values = 0;
    int count = 0;
    try {
        myDB=this.openDataBase();
        Cursor c=myDB.rawQuery("select count(PersonID) from Persons;",null);
        if (c != null ) {
            String h = "";
            c.moveToFirst();

            count = c.getInt(c.getColumnIndex("PersonID"));

            // put your code to get data from cursor                      

        }

        if(c != null) {
            c.close();
            myDB.close();
        }
    } catch(SQLException sqle) {

        throw sqle;
    }
    System.out.println(count + " is the rowcount of persons.");
    return count;

}

此函数返回Null值。即使System.out.println(count + " is the rowcount of persons.");也将count值显示为0,这是初始值。现在我无法发布logcat,因为此代码段与许多其他功能相关联,您可能无法理解。所以,请告诉我这段代码是否有任何错误。

请参阅以下代码。此代码调用上面的方法(在helper.java中)。 adapter.java:

public int getrowcountofpersons() {
        // TODO Auto-generated method stub
        int rc = 0;
        try {

            //open();

            rc = mDbHelper.getrcofpersons(); //Here the nullPointerException is raised.


        //  close();

        }
        catch (Exception e)
        {Log.v("getrowcountofpersons()","5");
            Log.v("Error in getrowcountofpersons() of adapter : ",e.toString());
        }
        Log.v("getrowcountofpersons()","6");
        System.out.println(rc + " is the rowcount of persons in adapter.");
        return rc;
    }

提前致谢。

1 个答案:

答案 0 :(得分:2)

更改

count = c.getInt(c.getColumnIndex("PersonID"));

count = c.getInt(0);

Cursor对象c中没有列名PersonID。这将只有一列,因此您可以使用0(ZERO)索引检索该列。


代码更新后: -

检查mDbHelper是否为null。这可能是null。因此,请检查您是否正在启动mDbHelper对象。