Android 检查空数据库会引发错误
我有 但是当我在一个空数据库上运行它时,它崩溃了 有什么建议吗 错误是:Android 检查空数据库会引发错误,android,sqlite,Android,Sqlite,我有 但是当我在一个空数据库上运行它时,它崩溃了 有什么建议吗 错误是: public boolean isEmpty() { if (database == null) { database = dbHelper.getReadableDatabase(); // or similar method that } Cursor cursor = database.rawQuery("SELECT COUNT(*) FROM " + Database
public boolean isEmpty()
{
if (database == null) {
database = dbHelper.getReadableDatabase(); // or similar method that
}
Cursor cursor = database.rawQuery("SELECT COUNT(*) FROM " + DatabaseHelper.TABLE_ENCOURAGEMENTS, null);
if (cursor != null) {
return false;
} else {
return true;
}
}
我认为您需要将您的条件修改为:
Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested,
with a size of 0
说明:
moveToFirst()是一种方便的方法,如果光标为空,则返回false。检查光标是否分配给NULL
是不够的。您需要始终调用它您想要检查光标的状态,因为每个光标都隐式地位于第一行之前,所以您需要始终调用它
因为您选择的是
COUNT(*)
,所以它总是返回至少一行的COUNT值。您需要检查此值是否大于零。如果是,db不是空的。那么,可能dbHelper没有返回数据库。您应该再次检查数据库是否为空
public boolean isEmpty() {
int count = -1;
if (cursor != null && cursor.moveToFirst()) {
count = cursor.getInt(0);
if (count > 0) {
return false;
}
else {
return true;
}
}
return true;
}
public boolean isEmpty() {
int count = -1;
if (cursor != null && cursor.moveToFirst()) {
count = cursor.getInt(0);
if (count > 0) {
return false;
}
else {
return true;
}
}
return true;
}
public boolean isEmpty()
{
if (database == null) {
database = dbHelper.getReadableDatabase(); // or similar method that
}
if (database != null) {
Cursor cursor = database.rawQuery("SELECT COUNT(*) FROM " + DatabaseHelper.TABLE_ENCOURAGEMENTS, null);
if (cursor != null) {
return false;
} else {
return true;
}
}
}