如何使用 Active Android 获取列名

How to get column names with Active Android

使用 Active Android,我可以将 table 的列名称作为 String[] 获取吗? RawQuery() returns 一个 List<Model> 所以我不能只插入 PRAGMA

建议的副本是关于获取 table 个名称,与活动 Android.

无关

好的,在搜索更多之后我发现我需要处理一个 Cursor,我可以通过使用 Cache.

来得到它

像这样:

Cursor c = Cache.openDatabase().rawQuery(new Select().from(User.class).toSql(),null);
String[] col = c.getColumnNames();

使用这些方法获取 Field 的集合:

public static synchronized TableInfo Cache.getTableInfo(Class<? extends Model> type);
public Collection<Field> TableInfo.getFields();

然后在每个 Field 上使用 public String TableInfo.getColumnName(Field field) 来获取列名。示例:

TableInfo<> userInfo = Cache.getTableInfo(User.class);
Collection<Field> fields = userInfo.getFields();
Set<String> columnNames = new HashSet<>();

for (Filed field : fields) {
    String name = userInfo.getColumnName(field);
    columnNames.add(name);
}

如果需要获取id列名,使用:

public String TableInfo.getIdName();