Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查表是否有行会导致SQLiite Android中出现空指针异常_Android_Sqlite_Count - Fatal编程技术网

检查表是否有行会导致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
这真的是您想要的吗?这并不能回答问题。