返回Android中SQLite表的所有列

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

Solutions Collecting From Web of "返回Android中SQLite表的所有列"

最好的方法是使用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应具有列名

您可能不需要列名列表。

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

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

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

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

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