How to get all table names in android sqlite database?

android, java, sqlite

Solution

Checked, tested and functioning. Try this code:

Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);

if (c.moveToFirst()) {
    while ( !c.isAfterLast() ) {
        Toast.makeText(activityName.this, "Table Name=> "+c.getString(0), Toast.LENGTH_LONG).show();
        c.moveToNext();
    }
}

I am assuming, at some point down the line, you will to grab a list of the table names to display in perhaps a `ListView` or something. Not just show a Toast.

Untested code. Just what came at the top of my mind. Do test before using it in a production app. ;-)

In that event, consider the following changes to the code posted above:

ArrayList<String> arrTblNames = new ArrayList<String>();
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);

    if (c.moveToFirst()) {
        while ( !c.isAfterLast() ) {
            arrTblNames.add( c.getString( c.getColumnIndex("name")) );
            c.moveToNext();
        }
    }

Problem

I have tried this code ``` Cursor c=db.rawQuery("SELECT name FROM sqlite_master WHERE type = 'table'",null); c.moveToFirst(); while(!c.isAfterLast()){ Toast.makeText(activityName.this, "Table Name=> "+c.getString(0), Toast.LENGTH_LONG).show(); } ``` But it throws the error: ``` "android.database.sqlite.SQLiteException: no such table: sqlite_master(code 1):, while compiling: SELECT name FROM sqlite_master WHERE type='table'" ``` How to fetch all the table names?

Original source