【问题标题】:How to build a Select query (more tables without join) in ORMLite如何在 ORMLite 中构建一个 Select 查询(没有连接的更多表)
【发布时间】:2014-03-22 13:35:36
【问题描述】:

在 ORMLite 中查询这个的最好方法是什么?

SELECT JOB.TASK_JOB,
            JOB.NAME_JOB,
            JOB_SETTINGS.DAY1,
            JOB_SETTINGS.DAY2,
            JOB_SETTINGS.DAY3,
            JOB_SETTINGS.DAY4,
            JOB_SETTINGS.DAY5,
            JOB_SETTINGS.DAY6,
            JOB_SETTINGS.DAY7,
            JOB_SETTINGS.HOURSPERWEEK,
            JOB_SETTINGS.PAYPERHOUR,
            JOB_SETTINGS.VARIABLEHOURS,
            WORKINGDAY.DATE_WD,
            WORKINGDAY.H_BREAK,
            WORKINGDAY.H_REAL,
            WORKINGDAY.H_IN,
            WORKINGDAY.H_OUT
        FROM JOB, JOB_SETTINGS,WORKINGDAY
        WHERE JOB.ID_JOB = JOB_SETTINGS.ID_JOB
        AND JOB_SETTINGS.ID_JOB = WORKINGDAY.ID_JOB
        AND JOB.ID_JOB = 2

我对每个表都有一个类(标准 ORMLite),但我不明白如何构建这个查询...

谢谢!!!

编辑:

我写了这段代码,但实际上我无法继续,因为我对 OrmLite 语法感到困惑......

DbHelperJob queryDao = new DbHelperJob(getActivity());

    QueryBuilder<Job, String> qJob = queryDao.getJobDao().queryBuilder();
    qJob.selectColumns("NAME_JOB", "TASK_JOB");

    QueryBuilder<JobSettings, String> qJobSett = queryDao.getJobSettDao().queryBuilder();
    qJobSett.selectColumns("DAY1", "DAY2", "DAY3", "DAY4", "DAY5", "DAY6", "DAY7", "HOURSPERWEEK", "PAYPERHOUR", "VARIABLEHOURS");

    QueryBuilder<WorkingDay, String> qWD = queryDao.getWDDao().queryBuilder();
    qWD.selectColumns("DATE_WD", "H_BREAK", "H_REAL", "H_IN", "H_OUT");

【问题讨论】:

    标签: android sql select join ormlite


    【解决方案1】:

    您可以使用 Dao 的 queryRaw() 方法。例如

    GenericRawResults<String[]> rawResults = queryDao.queryRaw("SELECT JOB.TASK_JOB,
                    JOB.NAME_JOB,
                    JOB_SETTINGS.DAY1,
                    JOB_SETTINGS.DAY2,
                    JOB_SETTINGS.DAY3,
                    JOB_SETTINGS.DAY4,
                    JOB_SETTINGS.DAY5,
                    JOB_SETTINGS.DAY6,
                    JOB_SETTINGS.DAY7,
                    JOB_SETTINGS.HOURSPERWEEK,
                    JOB_SETTINGS.PAYPERHOUR,
                    JOB_SETTINGS.VARIABLEHOURS,
                    WORKINGDAY.DATE_WD,
                    WORKINGDAY.H_BREAK,
                    WORKINGDAY.H_REAL,
                    WORKINGDAY.H_IN,
                    WORKINGDAY.H_OUT
                FROM JOB, JOB_SETTINGS,WORKINGDAY
                WHERE JOB.ID_JOB = JOB_SETTINGS.ID_JOB
                AND JOB_SETTINGS.ID_JOB = WORKINGDAY.ID_JOB
                AND JOB.ID_JOB = 2")
    

    在此处阅读更多信息enter link description here

    【讨论】:

    • 有效!!!非常感谢你!!我会添加 +1 来回答,但我没有最低的声誉分数!谢谢!
    【解决方案2】:

    这与 ORMLite 无关,但在 SQLiteQueryBuilder 中有一个非常方便的查询工具。你可以这样做:

    private static final String COLS = new String[] {
        JOB.TASK_JOB,
        JOB.NAME_JOB,
        JOB_SETTINGS.DAY1,
        JOB_SETTINGS.DAY2,
        JOB_SETTINGS.DAY3,
        JOB_SETTINGS.DAY4,
        JOB_SETTINGS.DAY5,
        JOB_SETTINGS.DAY6,
        JOB_SETTINGS.DAY7,
        JOB_SETTINGS.HOURSPERWEEK,
        JOB_SETTINGS.PAYPERHOUR,
        JOB_SETTINGS.VARIABLEHOURS,
        WORKINGDAY.DATE_WD,
        WORKINGDAY.H_BREAK,
        WORKINGDAY.H_REAL,
        WORKINGDAY.H_IN,
        WORKINGDAY.H_OUT
    }
    
    private static String SEL =
        "JOB.ID_JOB = JOB_SETTINGS.ID_JOB"
            + "AND JOB_SETTINGS.ID_JOB = WORKINGDAY.ID_JOB"
            + "AND JOB.ID_JOB = 2"
    
    private static String TABLES = "JOB, JOB_SETTINGS, WORKINGDAY""
    
    
    // in the query method...
        db.execSQL(
            SQLiteQueryBuilder.buildQueryString(
                false, TABLES, COLS, SEL, null, null, null, null);
    

    【讨论】:

    • 感谢您的回复!但我会用 OrmLite 构建这个查询......实际上,我正在用这个库编写一个 Android 应用程序! :) 有什么解决方案吗?
    • 是的....我非常反对 ORM,尤其是在 Android 中。如果你真的必须做 ORM,我想你会在这里找到你需要的答案:ormlite.com/javadoc/ormlite-core/doc-files/…。你正在做一个 3-way join,这可能需要一些调整......这是我试图避免 ORM 的原因之一......祝你好运
    【解决方案3】:

    Android 查询有参数:

    1. columns - 我们想要获取的字段列表
    2. selection - 字符串 WHERE 条件
    3. selectionArgs - 参数数组
    4. 选择。在选择时,可以使用“?”并将被这些值替换。
    5. groupBy - 分组
    6. - 使用聚合函数的条件
    7. orderBy - 排序

    使用它。

    【讨论】:

    • 是的,但是在 OrmLite 中有不同的语法,我对此感到非常困惑......谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多