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

Ana*_*nth 6 greendao

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

我试图使用GreenDao获取sqlite数据库列的不同值.我该怎么做?任何帮助赞赏.

Ale*_*exS 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;
}
Run Code Online (Sandbox Code Playgroud)

当然,您也可以为查询添加一些过滤条件.

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

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