Подтвердить что ты не робот

Вернуть все столбцы таблицы SQLite в Android

Таблица базы данных SQLite, которую я использую, подвергается добавлению столбцов всякий раз, когда мне нужно. Я не хочу жестко кодировать столбцы с риском обновления базы данных и забывать обновлять жестко заданные значения. Как я могу вернуть все имена столбцов в таблице? (Предпочтительно в String[])

4b9b3361

Ответ 1

Лучше всего, если вы используете экземпляр SQLiteDatabase и используете метод запроса

SQLiteDatabase mDataBase;
(some code here...)
mDataBase = getReadableDatabase();
Cursor dbCursor = mDataBase.query(TABLE_NAME, null, null, null, null, null, null);
String[] columnNames = dbCursor.getColumnNames();

columnNames должны иметь имена столбцов

Ответ 2

Вам может не понадобиться список имен столбцов.

Кажется, что вам нужен список имен столбцов, чтобы вы могли создать список столбцов, разделенных запятыми. Если это так, то где вы обычно размещаете список имен столбцов в запросе SELECT, вместо этого вы можете использовать звездочку:

SELECT * FROM table WHERE ...

Или, если таблица имеет псевдоним:

SELECT t.* FROM table AS t ...

Звездочка означает "все столбцы".

EDIT: Если вам действительно нужен список имен столбцов таблицы, вы можете использовать следующий код:

Cursor c = db.rawQuery("SELECT * FROM table WHERE 0", null);
try {
    String[] columnNames = c.columnNames();
} finally {
    c.close();
}

Обратите внимание, что вы не должны каким-либо образом изменять возвращаемый массив строк: https://code.google.com/p/android/issues/detail?id=3731

Ответ 3

Также интересно отметить, что метод запроса принимает значение NULL как вход для параметров столбца. Если вы введете нуль, все столбцы будут возвращены.

db.query("Table_name",null,COLUMN_ID + "=" + id,null,null,null,null);

Вернет все столбцы строки с указанным идентификатором.

Здесь вы можете увидеть определение метода.