如何检查sqlite数据库是否为空(android)?

时间:2017-01-05 11:06:09

标签: android sqlite

我正在制作一个将歌曲元数据加载到数据库中的媒体播放器。 下面是我的函数,用于检查db是否为空,但它不起作用。请告诉我我的代码有什么问题,并建议更正或更好的替代方案。

private static boolean isDbEmpty(SQLiteDatabase songsDb) {
    try {
        Cursor c = songsDb.rawQuery("SELECT * FROM " + SongsTable.TABLE_NAME, null);
        if (c.moveToFirst()) {    // c.getCount() == 0  is also not working
            Log.d(TAG, "isDbEmpty: not empty");
            return false;
        }
        c.close();
    } catch (SQLiteException e) {
        Log.d(TAG, "isDbEmpty: doesn't exist");
        return true;
    }
    return true;
}

4 个答案:

答案 0 :(得分:1)

使用以下查询来实现您的目标。自动创建了两个表 - android_metadata和sqlite_sequence,因此我们在查询中应用NOT条件。

SELECT count(*) FROM sqlite_master WHERE type = 'table' AND name != 'android_metadata' AND name != 'sqlite_sequence';

答案 1 :(得分:0)

试试这个。

private static boolean isDbEmpty(SQLiteDatabase songsDb) {
    Cursor c = null;
    try {
        c = songsDb.rawQuery("SELECT * FROM " + SongsTable.TABLE_NAME, null);
        if (c == null || c.getCount() == 0) {
            return true;
        } else if (c.moveToFirst()) {
            Log.d(TAG, "isDbEmpty: not empty");
            return false;
        }
    } catch (SQLiteException e) {
        Log.d(TAG, "isDbEmpty: doesn't exist");
        return true;
    }finally {
        if(c != null){
            c.close();
        }
    }
    return true;
}

答案 2 :(得分:-1)

这只会告诉您 <?php if (count($developer_table)): ?> <?php $count = 0; ?> <-- add this <?php foreach ($developer_table as $developer_table) : ?> <tr> <td><?= ++$count ?></td><-- First column 是否为空,而不是TABLE

无论如何,您可以使用以下代码:

DATABASE

然后测试Cursor countCursor = songsDb.rawQuery("select count(*) from " + SongsTable.TABLE_NAME, null); countCursor.moveToFirst(); int count = countCursor.getInt(0); countCursor.close();

答案 3 :(得分:-1)

您可以这样检查:

Cursor c = songsDb.rawQuery("SELECT * FROM " + SongsTable.TABLE_NAME, null);
    cursor.moveToFirst();

    if (cursor != null && cursor.getCount() == 0) {
     //for empty
        return true;
    }else{
    // not empty
    return false;
  }