我工作sqllite.i成功创建了数据库,我可以在我的数据库中添加/删除/更新 现在我想写函数来检查表是否为空。如果表是空显示空吐司消息否则另一个吐司消息 我写了一些代码但是awlays Toast消息是空的 这是我的代码
public boolean checkForTables(){
boolean hasTables = false;
db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " +TABLE_CONTACTS, null);
if(cursor.getCount() == 0){
hasTables=false;
if(cursor.getCount() > 0){
hasTables=true;
}
cursor.close();
}
return hasTables;
}
我在另一个活动中检查此功能,但正如我所说的那样,消息是空的
if(helper.checkForTables())
Toast.makeText(getActivity(), "not empty", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getActivity(), "empty", Toast.LENGTH_SHORT).show();
如果有人知道解决方案,我做错了什么,请帮助我
答案 0 :(得分:4)
您以错误的方式嵌套if语句。这样,假设其余部分是正确的,应该有效:
public boolean checkForTables(){
boolean hasTables = false;
db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " +TABLE_CONTACTS, null);
if(cursor != null && cursor.getCount() > 0){
hasTables=true;
cursor.close();
}
return hasTables;
}
顺便说一句,执行SELECT COUNT(*)应该更有效:
public boolean checkForTables(){
db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT COUNT(*) FROM " +TABLE_CONTACTS, null);
if(cursor != null){
cursor.moveToFirst();
int count = cursor.getInt(0);
if(count > 0){
return true;
}
cursor.close();
}
return false;
}
答案 1 :(得分:1)
if
条件错误,试试这个:
public boolean checkForTables(){
db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " +TABLE_CONTACTS, null);
if(cursor != null && cursor.getCount() > 0){
cursor.close();
return true;
}
return false;
}
答案 2 :(得分:0)
你错了你的括号:
if(cursor.getCount() == 0){
hasTables=false;
if(cursor.getCount() > 0){
hasTables=true;
}
cursor.close();
}
到此:
if(cursor.getCount() == 0){
hasTables=false;
}
else if(cursor.getCount() > 0){
hasTables=true;
}
cursor.close();
答案 3 :(得分:0)
你可以尝试:
Cursor cursor = db.rawQuery(select count(*) from +TABLE_CONTACTS, null);
cursor.moveToFirst();
int count= cursor.getInt(0);
if(count == 0){
hasTables=false;
}
else if(count > 0){
hasTables=true;
}