检查表是否有行会导致SQLiite Android中出现空指针异常
我想检查表是否有行,是否包含行,然后我想删除它。下面是我检查表中是否有行的代码检查表是否有行会导致SQLiite Android中出现空指针异常,android,sqlite,count,Android,Sqlite,Count,我想检查表是否有行,是否包含行,然后我想删除它。下面是我检查表中是否有行的代码 boolean empty = true; Cursor cursor = db.rawQuery("SELECT count(*) FROM TABLE_NAME",null); cursor.moveToFirst(); if (cursor.getInt(0) > 0) { empty = false; } else {
boolean empty = true;
Cursor cursor = db.rawQuery("SELECT count(*) FROM TABLE_NAME",null);
cursor.moveToFirst();
if (cursor.getInt(0) > 0)
{
empty = false;
}
else
{
empty= true;
}
return empty;
我甚至试着用下面的代码检查
boolean empty = true;
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM TABLE_NAME", null);
if (cur != null && cur.moveToFirst()) {
empty = (cur.getInt (0) == 0);
}
cur.close();
return empty;
上述两个代码都在第行中抛出NullPointerException
(“从表_名称中选择计数(*),空)
任何帮助都会很好!!谢谢Android附带了一个名为DatabaseUtils的实用程序类,它有一个方法queryNumEntries,可以将您的数据库对象和表名作为参数,并返回该数据库上的记录总数。相当干净的方式。你不需要写“从mytable中选择计数(*)之类的东西
public long count(){
返回DatabaseUtils.queryNumEntries(db,'myTablename');
}
如果您的数据库不是空的,请单击“下一步”删除行
deleteAll可删除数据库中的所有行,或使用delete_byID()将ID作为参数传递给要删除的行
public int deleteAll(){
返回sqLiteDatabase.delete(MYDATABASE_TABLE,null,null);
}
公共void delete_byID(int id){
sqLiteDatabase.delete(MYDATABASE_TABLE,KEY_ID+“=”+ID,null);
}
也发布异常…您的db
对象似乎是null
。如果它在该行上抛出,则db
可能是null。@MD“select count(*)将始终有一行(即使表为空),因此在本例中getCount()==1
但您没有初始化db
变量如果光标,则返回false。getInt(0)>0
这真的是您想要的吗?这并不能回答问题。