我在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;
}
提前致谢。
答案 0 :(得分:2)
更改
count = c.getInt(c.getColumnIndex("PersonID"));
到
count = c.getInt(0);
Cursor对象c中没有列名PersonID
。这将只有一列,因此您可以使用0(ZERO)索引检索该列。
代码更新后: -
检查mDbHelper
是否为null
。这可能是null。因此,请检查您是否正在启动mDbHelper
对象。