web-dev-qa-db-fra.com

Sqlite Vérifier si la table est vide

Eh bien, j'ai une base de données et il y a beaucoup de table. mais généralement, les tables sont vides .. Je veux vérifier si une table de base de données est vide ... Si la table est vide, le programme le remplira.

public static long queryNumEntries (SQLiteDatabase db, String table)

Je vais l'utiliser mais il faut l'API 11.

23
mehmet

vous pouvez exécuter select count(*) from table et vérifier si count> 0 puis laisser le remplir.

comme

 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
31
Waqar Ahmed

Faites un 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;
7
Luca Sepe

Solutions optimales

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;
    }
6
Dwivedi Ji
 public boolean isEmpty(String TableName){

    SQLiteDatabase database = this.getReadableDatabase();
    int NoOfRows = (int) DatabaseUtils.queryNumEntries(database,TableName);

    if (NoOfRows == 0){
        return true;
    }else {
        return false;
    }
}
4
Mahesh Uligade

Voici une meilleure option:

public boolean validateIfTableHasData(SQLiteDatabase myDatabase,String tableName){
    Cursor c = myDatabase.rawQuery("SELECT * FROM " + tableName,null);
    return c.moveToFirst();
}
2
Juan Pablo Arango

Voici comment vous pouvez le faire -

if(checkTable("TABLE"))
{
  //table exists fill data.
}

Méthode de vérification de la table

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;
}
}
1
My God

Je pense que cette solution est meilleure:

    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() vérifier la table et retourner true, si la table est vide. Réponse qui est marquée correcte - utilise un contrôle supplémentaire.