如何使用GreenDao执行“从emp中选择不同的ename”

时间:2014-05-03 13:38:42

标签: greendao

如何执行"从emp"中选择不同的ename?使用GreenDao

我正在尝试使用GreenDao获取sqlite数据库列的不同值。我该怎么做?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:15)

您必须使用原始查询,例如:

private static final String SQL_DISTINCT_ENAME = "SELECT DISTINCT "+EmpDao.Properties.EName.columnName+" FROM "+EmpDao.TABLENAME;

public static List<String> listEName(DaoSession session) {
    ArrayList<String> result = new ArrayList<String>();
    Cursor c = session.getDatabase().rawQuery(SQL_DISTINCT_ENAME, null);
    try{
        if (c.moveToFirst()) {
            do {
                result.add(c.getString(0));
            } while (c.moveToNext());
        }
    } finally {
        c.close();
    }
    return result;
}

当然,您也可以在查询中添加一些过滤条件。

静态字符串SQL_DISTINCT_ENAME用于提高性能,因此每次都不必构建查询字符串。

EmpDao.PropertiesEmpDao.TABLENAME用于始终具有由greendao生成的确切列名和表名。