如果表不存在或表内容为空,我想显示警告框。
要检查表格是否为空,请使用:
cCheckDB = db.rawQuery("SELECT COUNT(*) FROM " + MainActivity.TABLE_NAME +"", null);
if (cCheckDB != null) {
cCheckDB.moveToFirst();
if (cCheckDB.getInt (0) == 0) {
// EMPTY
}
}
但是如何将此包装在"如果表存在"?什么是最好的方式?
我知道检查表是否存在或检查其中是否有内容的两种方法。但我想以有意义的方式使用支票而不是单一查询,如果可能的话 - 这是我的问题。
答案 0 :(得分:4)
希望,这对你有所帮助。 它运作良好!!!
public boolean isTableExists(String tableName, boolean openDb) {
if(openDb) {
if(mDatabase == null || !mDatabase.isOpen()) {
mDatabase = getReadableDatabase();
}
if(!mDatabase.isReadOnly()) {
mDatabase.close();
mDatabase = getReadableDatabase();
}
}
Cursor cursor = mDatabase.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
if(cursor!=null) {
if(cursor.getCount()>0) {
cursor.close();
return true;
}
cursor.close();
}
return false;
}
答案 1 :(得分:1)
要检查您的表是否存在,您可以使用:
<强> SELECT name FROM sqlite_master WHERE type='table' AND name='table_name';
强>
此处,将table_name替换为您要更改的表名
EX:
SELECT name FROM sqlite_master WHERE type='table' AND name='Employee_Details';
答案 2 :(得分:0)
更优化的方法是检查表是否存在然后检查记录是否存在
private void clearTable(String tableName) {
int count;
Cursor cursor = db.rawQuery("SELECT count(*) FROM sqlite_master WHERE type='table' AND " +
"name= " + tableName, null);
cursor.moveToFirst();
count = cursor.getInt(0);
if (!cursor.isClosed())
cursor.close();
if (count > 0)//table exist now delete record if it exist
{
cursor=db.rawQuery("select exists(select 1 FROM " + tableName + ")", null);
cursor.moveToFirst();
count = cursor.getInt(0);
if (!cursor.isClosed())
cursor.close();
if (count > 0)
db.execSQL("delete from " + tableName);
}
}