cursor.getcount重复一个空表

时间:2016-03-30 06:04:14

标签: android sqlite cursor

我有一个Android应用程序,它总是在后台运行Intent Service。我也有一个数据库。我的服务会不断检查数据库中的表是否为空。如果已填充,则执行所需的功能。为此,我计算表中的行数:

public int getCount(){
    SQLiteDatabase db = this.getWritableDatabase();
    String count = "SELECT count(*) FROM Queue;";
    Cursor mcursor = db.rawQuery(count, null);
    mcursor.moveToFirst();
    int icount = mcursor.getInt(0);
    db.close();
    return icount;
}

填充表格时,此功能完全正常。但对于一个空案例,它确实将行数计为0(在日志中检查),但经过几次,我的应用程序崩溃:

  

03-30 01:43:45.465 2026-2055 /? E / SQLiteLog:(14)语句在7处中止:[SELECT count(*)FROM Queue;]无法打开数据库文件

     

03-30 01:43:45.465 2026-2055 /? E / SQLiteQuery:异常:无法打开数据库文件(代码14); query:SELECT count(*)FROM Queue;

     

03-30 01:43:45.465 2026-2055 /? E / AndroidRuntime:FATAL EXCEPTION:IntentService [MyService]

     

android.database.sqlite.SQLiteCantOpenDatabaseException:无法打开数据库文件(代码14)

     

在DATA.QueueTable.getCount(QueueTable.java:29)

这是:

mcursor.moveToFirst();

这是我的服务:

 protected void onHandleIntent(Intent intent) {
    Log.d("tracing","Starting background service");
    int count=0;
    String c;
    while(true){
        count = queueTable.getCount();
        c = String.valueOf(count);
        Log.d("tracing",c);
        if(count>0){/* function */}
    }
}

注意:我只想在这里计算一个空表的行数。我正在使用无限循环来确保我的服务始终运行,不确定这是否正确。 :3

感谢您的帮助!

0 个答案:

没有答案