How to check if an Android SQLite table contains data?
How to check if an Android SQLite table contains data?
There are two ways to do this:
Using a SELECT COUNT
:
// Obtenha a instância de SQLiteDatabase
SQLiteDatabase db = ...;
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM TABELA", null);
if (cur != null) {
cur.moveToFirst();
if (cur.getInt (0) == 0) {
// Tabela esta vazia, preencha com seus dados iniciais
} else {
// Tabela ja contem dados.
}
}
A recommendation for large tables can be the query:
SELECT EXISTS (SELECT 1 FROM TABELA)
In this query the engine can stop when it finds the first element, being more performative.
Getting:
// Obtenha a instância de SQLiteDatabase
SQLiteDatabase db = ...;
Cursor cur = db.rawQuery("SELECT EXISTS (SELECT 1 FROM TABELA)", null);
if (cur != null) {
cur.moveToFirst();
if (cur.getInt (0) == 0) {
// Tabela esta vazia, preencha com seus dados iniciais
} else {
// Tabela ja contem dados.
}
}
Or using DatabaseUtils
:
// Obtenha a instância de SQLiteDatabase
SQLiteDatabase db = ...;
long numOfEntries = DatabaseUtils.queryNumEntries(db, "TABELA");
if(numOfEntries == 0l) {
// Tabela vazia, preencha com seus dados iniciais
} else {
// Tabela ja contem dados.
}
Looking at the source code of DatabaseUtils.queryNumEntries(SQLiteDatabase db, String table)
. They both do the same thing.
Sources: