Как получить имена всех таблиц, присутствующих в базе данных в Android SQL lite - PullRequest
4 голосов
/ 30 мая 2011

Я не могу найти способ получить / сбросить имена таблиц в текстовом представлении из базы данных в Android. Я знаю о: запрос

SELECT * 
  FROM sqlite_master

Приведенный выше оператор приводит курсор, указывающий метаданные обо всех базах данных / представлениях / таблицах. Но как я могу получить имена всех таблиц, которые я создал, в моей базе данных?

Ответы [ 3 ]

2 голосов
/ 30 мая 2011

Если вы хотите получить информацию в массиве (или любой структуре, которую вы можете перебирать в строках), вы можете создать метод, подобный следующему:

public String[] getDBNames(){
    String[] result;
    try {
        StringBuilder sb = new StringBuilder();
        sb.append("SELECT name FROM sqlite_master "); 
        sb.append("WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%' ");
        sb.append("UNION ALL ");
        sb.append("SELECT name FROM sqlite_temp_master "); 
        sb.append("WHERE type IN ('table','view') ");
        sb.append("ORDER BY 1");

        Cursor c = _db.rawQuery(sb.toString(), null);
        c.moveToFirst();

        result = new String[c.getCount()];
        int i = 0;
        while (c.moveToNext()) {
            result[i]= c.getString(c.getColumnIndex("name"));
            i++;
        }
        c.close();
    }
    catch(SQLiteException e){
        Log.e("OOPS", e);
    }
    return result;
}
2 голосов
/ 30 мая 2011

Не уверен, если вы запрашиваете код рендеринга SQL или Android, но согласно FAQ по SQLite , этот SQL должен работать, чтобы дать вам имена:

SELECT name FROM sqlite_master
WHERE type='table'
ORDER BY name;
0 голосов
/ 30 мая 2011

Кроме того, если вы просто пытаетесь просмотреть базу данных, вы можете просто загрузить ее в sqlite3 в оболочке adb и запустить ".tables":

cd data/data/com.whatever.appname/databases
sqlite3 DBNAME
.tables
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...