Sqlite Проверьте, нет ли таблицы
Ну, у меня есть база данных, и у нее много таблиц. но в целом таблицы пустые.
Я хочу проверить, пуста ли таблица базы данных.
Таблица IF пуста, программа заполнит ее.
public static long queryNumEntries (SQLiteDatabase db, String table)
Я буду использовать его, но он запрашивает API 11.
Ответы
Ответ 1
вы можете выполнить select count(*) from table
и проверить, если count> 0
, а затем оставить его еще.
как
SQLiteDatabase db = table.getWritableDatabase();
String count = "SELECT count(*) FROM table";
Cursor mcursor = db.rawQuery(count, null);
mcursor.moveToFirst();
int icount = mcursor.getInt(0);
if(icount>0)
//leave
else
//populate table
Ответ 2
Сделайте SELECT COUNT
:
boolean empty = true
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM YOURTABLE", null);
if (cur != null && cur.moveToFirst()) {
empty = (cur.getInt (0) == 0);
}
cur.close();
return empty;
Ответ 3
Оптимальные решения
public boolean isMasterEmpty() {
boolean flag;
String quString = "select exists(select 1 from " + TABLE_MASTERS + ");";
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery(quString, null);
cursor.moveToFirst();
int count= cursor.getInt(0);
if (count ==1) {
flag = false;
} else {
flag = true;
}
cursor.close();
db.close();
return flag;
}
Ответ 4
Вот как вы можете это сделать -
if(checkTable("TABLE"))
{
//table exists fill data.
}
Метод проверки таблицы -
public static boolean checkTable(String table) {
Cursor cur2 = dbAdapter.rawQuery("select name from sqlite_master where name='"
+ table + "'", null);
if (cur2.getCount() != 0) {
if (!cur2.isClosed())
cur2.close();
return true;
} else {
if (!cur2.isClosed())
cur2.close();
return false;
}
}
Ответ 5
public boolean isEmpty(String TableName){
SQLiteDatabase database = this.getReadableDatabase();
int NoOfRows = (int) DatabaseUtils.queryNumEntries(database,TableName);
if (NoOfRows == 0){
return true;
}else {
return false;
}
}
Ответ 6
Я думаю, это решение лучше:
boolean flag;
DatabaseHelper databaseHelper = new DatabaseHelper(getApplicationContext(), DatabaseHelper.DATABASE_NAME, null, DatabaseHelper.DATABASE_VERSION);
try {
sqLiteDatabase = databaseHelper.getWritableDatabase();
} catch (SQLException ex) {
sqLiteDatabase = databaseHelper.getReadableDatabase();
}
String count = "SELECT * FROM table";
Cursor cursor = sqLiteDatabase.rawQuery(count, null);
if (cursor.moveToFirst()){
flag = false;
} else {
flag = true;
}
cursor.close();
sqLiteDatabase.close();
return flag;
moveToFirst()
проверить таблицу и вернуть true
, если таблица пуста. Ответ, который отмечен правильно - использует дополнительную проверку.
Ответ 7
Вот лучший вариант:
public boolean validateIfTableHasData(SQLiteDatabase myDatabase,String tableName){
Cursor c = myDatabase.rawQuery("SELECT * FROM " + tableName,null);
return c.moveToFirst();
}