How does one check if a table exists in an Android SQLite database? How does one check if a table exists in an Android SQLite database? database database

How does one check if a table exists in an Android SQLite database?


Try this one:

public boolean isTableExists(String tableName, boolean openDb) {    if(openDb) {        if(mDatabase == null || !mDatabase.isOpen()) {            mDatabase = getReadableDatabase();        }        if(!mDatabase.isReadOnly()) {            mDatabase.close();            mDatabase = getReadableDatabase();        }    }    String query = "select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'";    try (Cursor cursor = mDatabase.rawQuery(query, null)) {        if(cursor!=null) {            if(cursor.getCount()>0) {                return true;            }        }        return false;    }}


I know nothing about the Android SQLite API, but if you're able to talk to it in SQL directly, you can do this:

create table if not exists mytable (col1 type, col2 type);

Which will ensure that the table is always created and not throw any errors if it already existed.


Although there are already a lot of good answers to this question, I came up with another solution that I think is more simple. Surround your query with a try block and the following catch:

catch (SQLiteException e){    if (e.getMessage().contains("no such table")){            Log.e(TAG, "Creating table " + TABLE_NAME + "because it doesn't exist!" );            // create table            // re-run query, etc.    }}

It worked for me!