返回Android中SQLite表的所有列

时间:2010-12-29 01:42:50

标签: java android sqlite

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

3 个答案:

答案 0 :(得分:52)

最好使用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应该有列名

答案 1 :(得分:7)

您可能不需要列名列表。

似乎您需要列名列表,以便您可以构建以逗号分隔的列列表以供选择。如果是这种情况,那么通常在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

答案 2 :(得分:4)

有趣的是,查询方法接受 null 作为列参数的输入。如果输入null,则返回所有列。

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

将返回具有指定ID的行的所有列。

您可以在此处查看方法定义。