我正在制作一个将歌曲元数据加载到数据库中的媒体播放器。 下面是我的函数,用于检查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;
}
答案 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;
}