Вернуть все столбцы таблицы SQLite в Android - PullRequest
29 голосов
/ 29 декабря 2010

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

Ответы [ 3 ]

53 голосов
/ 29 декабря 2010

Лучше всего, если вы используете 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 должен иметь имена столбцов

7 голосов
/ 29 декабря 2010

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

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

SELECT * FROM table WHERE ...

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

SELECT t.* FROM table AS t ...

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

РЕДАКТИРОВАТЬ: Если вы действительно хотите список имен столбцов таблицы, то вы можете использовать следующий код:

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

4 голосов
/ 20 февраля 2016

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...