Таблица базы данных SQLite, которую я использую, подвергается добавлению столбцов всякий раз, когда мне нужно. Я не хочу жестко кодировать столбцы с риском обновления базы данных и забывать обновлять жестко заданные значения. Как я могу вернуть все имена столбцов в таблице? (Предпочтительно в String[]
)
Вернуть все столбцы таблицы SQLite в Android
Ответ 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);
Вернет все столбцы строки с указанным идентификатором.
Здесь вы можете увидеть определение метода.