首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Java中用sql 联合查询出现有关问题,求解

2012-07-27 
Java中用sql 联合查询出现问题,求解。数据库代码:SQL codeselect b.*,e.uid,e.ip,e.place,e.ctime,count(di

Java中用sql 联合查询出现问题,求解。
数据库代码:

SQL code
select b.*,e.uid,e.ip,e.place,e.ctime,count(distinct e.uid) from edm.edm_open_56 e left join (select u.id,u.email from e_toemail u ) b on e.uid = b.id

运行数据库代码的结果:

id email uid ip place ctime count(distinct e.uid)
267343193715@qq.com267192.168.4.200- LAN13400117061

Java代码:
Java code
public List<EmailOpenReturnInfoVO> findOpenInfo(Long taskId) {        List<EmailOpenReturnInfoVO> emailOpenReturnInfoVOs = new ArrayList<EmailOpenReturnInfoVO>();        String sql = "select b.*,e.uid,e.ip,e.place,e.ctime,count(distinct e.uid) from edm.edm_open_56 e left join (select u.id,u.email from e_toemail u ) b on e.uid = b.id";        PreparedStatement ps = null;        ResultSet rs = null;        EmailOpenReturnInfoVO vo = null;        Session session = null;        try {            session = this.sessionFactory.openSession();            ps = SessionFactoryUtils.getDataSource(session.getSessionFactory()).getConnection().prepareStatement(sql);            rs = ps.executeQuery();            while (rs.next()) {                vo = new EmailOpenReturnInfoVO();                vo.setEmial(rs.getString("email"));                vo.setIp(rs.getString("ip"));                vo.setPlace(rs.getString("place"));                vo.setTime(new Date(rs.getInt("ctime")*1000L));                emailOpenReturnInfoVOs.add(vo);            }        } catch (SQLException e) {            e.printStackTrace();        } finally {            if(null != session)                session.close();        }        return emailOpenReturnInfoVOs;    }

运行最后的结果:id = null ,email = null ;也就是e_toemail表中的所有数据都为null,但是第一张表中的数据能正常获取,求解啊。急急急

有能在线请教的吗?可以联系我的Q: 526673470

[解决办法]
运行下sql看看数据
在vo打个断点、对比下
[解决办法]
探讨

引用:

运行下sql看看数据
在vo打个断点、对比下

运行了SQL,sql是正确的,不是VO的问题,我设置了断点,获取:rs.getString("email") 的结果就是为NULL

[解决办法]
vo.setEmial(rs.getString("email"));

把email转成大写试试
[解决办法]
我很奇怪LZ的sql能执行?
count是聚合函数,如果select中除了count以外还有其它非聚合的字段存在,比如LZ的b.*,e.uid等,那么后面没有group by的话应该就是非法的

热点排行
Bad Request.