检查表是否有行会导致SQLiite Android中出现空指针异常

时间:2016-05-07 05:54:44

标签: 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
    {
        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

(“SELECT COUNT(*)FROM TABLE_NAME”,null);

任何帮助都会很棒!!谢谢

1 个答案:

答案 0 :(得分:1)

Android附带了一个名为DatabaseUtils的实用程序类,它有一个方法queryNumEntries,它可以将您的数据库对象和表名作为参数,并返回该数据库上的记录总数。相当干净的方式。你不需要写'从mytable'那里选择Count(*)。

public long count() {
    return DatabaseUtils.queryNumEntries(db,'myTablename');
}
如果您的数据库不为空,请在

旁边删除行 deleteAll以dB为单位删除所有行,或者通过将ID作为参数传递给要删除的行来使用delete_byID()。

public int deleteAll(){
    return sqLiteDatabase.delete(MYDATABASE_TABLE, null, null);
}

public void delete_byID(int id){
    sqLiteDatabase.delete(MYDATABASE_TABLE, KEY_ID+"="+id, null);
}