`

fastunit中使用MapList一个注意例子

阅读更多
下面一个例子如果SQL中使用查询表字段使用别名就会出错。以ORACLE SQL为例。
正确:
    
    /**
     * 检查ID是否在例子表中存在
     * @param db db对象
     * @param id id
     * @return
     */
    private int checkSampleTable(DB db, String id) throws JDBCException {
        // 查询SQL
        StringBuffer selectSql = new StringBuffer();
        selectSql.append("SELECT COUNT(1)")
                 .append("  FROM SAMPLE_TABLE")
                 .append(" WHERE ID = '").append(id).append("'");

        MapList mList = db.query(selectSql.toString());
        
        return mList.getRow(0).getInt(0, 0);
    }


错误
    /**
     * 检查ID是否在例子表中存在
     * @param db db对象
     * @param id id
     * @return
     */
    private int checkSampleTable(DB db, String id) throws JDBCException {
        // 查询SQL
        StringBuffer selectSql = new StringBuffer();
        selectSql.append("SELECT COUNT(1) AS COUNTNUM")
                 .append("  FROM SAMPLE_TABLE")
                 .append(" WHERE ID = '").append(id).append("'");

        MapList mList = db.query(selectSql.toString());
        
        return mList.getRow(0).getInt("COUNTNUM", 0);
    }

注意以上内容。当给“COUNT(1)”定义别名“COUNTNUM”后,使用“getInt("COUNTNUM", 0)”方法不能取到正确的COUNT值。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics