返回Android中SQLite表的所有列

Moh*_*nde 31 java sqlite android

我正在使用的SQLite数据库表需要在需要时添加列.我不想硬编码列,冒着更新数据库和忘记更新硬编码值的风险.我怎么能返回表中列的所有名称?(最好在a String[])

GSr*_*ree 54

如果您使用SQLiteDatabase实例并使用查询方法,则最佳

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

columnNames 应该有列名

  • 请告诉我如何从特定列中获取价值? (2认同)

Dan*_*ien 7

您可能不需要列名列表.

您似乎需要列名列表,以便您可以构建以逗号分隔的列列表以供选择.如果是这种情况,那么通常将列名列表放在SELECT查询中,您可以改为使用星号:

SELECT * FROM table WHERE ...
Run Code Online (Sandbox Code Playgroud)

或者如果表是别名:

SELECT t.* FROM table AS t ...
Run Code Online (Sandbox Code Playgroud)

星号表示"所有列".

编辑:如果你真的想要一个表的列名列表,那么你可以使用以下代码:

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

请注意,您不得以任何方式修改返回的字符串数组:https://code.google.com/p/android/issues/detail?id = 3731