Как получить все имена таблиц в базе данных android sqlite?

Я попробовал этот код

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(); } 

Но он выдает ошибку "android.database.sqlite.SQLiteException: no such table: sqlite_master(code 1):,while compiling: SELECT name FROM sqlite_master WHERE type='table'"

Как получить все имя таблицы? Помоги мне

Заранее спасибо..

Solutions Collecting From Web of "Как получить все имена таблиц в базе данных android sqlite?"

Проверено, проверено и работает. Попробуйте этот код:

 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(); } } 

Я предполагаю, что в какой-то момент вниз по линии вы должны будете захватить список имен таблиц, чтобы отображать, возможно, ListView или что-то в этом роде. Не просто показать тост.

Неиспользованный код. Только то, что было на высоте. Перед тестированием перед тем, как использовать его в производственном приложении. 😉

В этом случае рассмотрите следующие изменения в коде, указанном выше:

 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(); } } 

Измените свою строку sql на этот:

"SELECT name FROM sqlite_master WHERE type='table' AND name!='android_metadata' order by name"

Попробуйте добавить схему перед таблицей

schema.sqlite_master

Из SQL FAQ

Если вы используете программу доступа к командной строке sqlite3, вы можете ввести «.tables», чтобы получить список всех таблиц. Или вы можете ввести «.schema», чтобы увидеть полную схему базы данных, включая все таблицы и индексы. За каждой из этих команд может следовать шаблон LIKE, который будет ограничивать отображаемые таблицы.

Внутри программы C / C ++ (или скрипта с использованием привязок Tcl / Ruby / Perl / Python) вы можете получить доступ к именам таблиц и индексов, выполнив SELECT в специальной таблице с именем «SQLITE_MASTER». Каждая база данных SQLite имеет таблицу SQLITE_MASTER, которая определяет схему для базы данных . Таблица SQLITE_MASTER выглядит так:

CREATE TABLE sqlite_master (тип TEXT, имя TEXT, tbl_name TEXT, корневая страница INTEGER, sql TEXT);

Чтобы получить имя таблицы со списком всех столбцов этой таблицы

 public void getDatabaseStructure(SQLiteDatabase db) { Cursor c = db.rawQuery( "SELECT name FROM sqlite_master WHERE type='table'", null); ArrayList<String[]> result = new ArrayList<String[]>(); int i = 0; result.add(c.getColumnNames()); for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { String[] temp = new String[c.getColumnCount()]; for (i = 0; i < temp.length; i++) { temp[i] = c.getString(i); System.out.println("TABLE - "+temp[i]); Cursor c1 = db.rawQuery( "SELECT * FROM "+temp[i], null); c1.moveToFirst(); String[] COLUMNS = c1.getColumnNames(); for(int j=0;j<COLUMNS.length;j++){ c1.move(j); System.out.println(" COLUMN - "+COLUMNS[j]); } } result.add(temp); } 

Попробуй это:

 SELECT name FROM sqlite_master WHERE type = "table";