Intereting Posts
Мигающий текст в представлении android Как использовать аутентификацию дайджеста в android? Несколько корневых тегов в Android Studio Почему libcore.io.ErrnoException: kill failed: ESRCH (нет такого процесса) в android? Использовать Picasso для получения обратного вызова с помощью Bitmap Android-Thread.join () заставляет приложение зависать Действительно ли невозможно защитить приложения Android от обратной инженерии? Приложение не закрыло объект курсора или базы данных, который был открыт здесь: Как распечатать текстовый файл с помощью WiFi Direct Работа с устаревшим android.text.ClipboardManager Почему я получаю эту ошибку, когда добавляю клиентскую библиотеку Google Translate в свой проект Android? Защитите и удалите защищенный файл, чтобы избежать случайного удаления на Android с помощью прослушиваемых приложений для очистки Переменные среды Linux для Linux Как узнать, включен ли экран с ADB Android Stringblock.get Исключение NullPointer на Lollipop

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

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

Прямо сейчас получилось так далеко:

final ArrayList<String> dirArray = new ArrayList<String>(); SqlHelper sqlHelper = new SqlHelper(this, "TK.db", null, 1); SQLiteDatabase DB = sqlHelper.getWritableDatabase(); Cursor c = DB.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null); c.moveToFirst(); while (c.isAfterLast() == false) { dirArray.add("n" + c.getColumnIndex("name")); c.moveToNext(); } c.close(); 

Но он выводит некоторые «android_metadata» вместо имени моей таблицы. Так что угадайте, что что-то не так с запросом.

Благодаря!

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

Просто сделал быстрый тест в плагине SQLite Manager в FireFox с SQLite db, с которым я работаю, и запрос, который вы используете, возвращает имена таблиц. Правильно ли вы создаете таблицы и проверили ли вы свои ожидания?

Чтобы выполнить итерацию, сделайте что-то вроде:

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

Попробуйте этот код

 final ArrayList<String> dirArray = new ArrayList<String>(); SqlHelper sqlHelper = new SqlHelper(this, "TK.db", null, 1); SQLiteDatabase DB = sqlHelper.getWritableDatabase(); Cursor c = DB.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null); while(c.moveToNext()){ String s = c.getString(0); if(s.equals("android_metadata")) { //System.out.println("Get Metadata"); continue; } else { dirArray.add(s); } } в final ArrayList<String> dirArray = new ArrayList<String>(); SqlHelper sqlHelper = new SqlHelper(this, "TK.db", null, 1); SQLiteDatabase DB = sqlHelper.getWritableDatabase(); Cursor c = DB.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null); while(c.moveToNext()){ String s = c.getString(0); if(s.equals("android_metadata")) { //System.out.println("Get Metadata"); continue; } else { dirArray.add(s); } } 

Вы также можете использовать этот

 Cursor cursor = DB.getInstance(this).getAllTableNames(); if (cursor.moveToFirst()) { while (cursor.moveToNext()) { String tableName = cursor.getString(cursor.getColumnIndex("name")); Log.i(LOG_TAG, "..." + tableName); } }