String sql="SELECT a.USER_ID from FTE_USER a where a.USERNAME=? AND a.CELLPHONE=?";
Integer count=0;
Object[] parm = { userName, cellPhone };
System.out.println("SELECT a.USER_ID from FTE_USER a where a.USERNAME='"+userName+"' AND a.CELLPHONE='"+cellPhone+"'");
try {
count= this.baseSpringJdbcDAO.getJdbcTemplate().queryForInt(sql, parm);

System.out.println(count);
} catch (Exception ex) {
ex.printStackTrace();
count= -1;
}
return count;

解决方案 »

  1.   

    要是数据库存在的话,count可以接收到Id的
    但是要是不存在的话就运行到ex.printStackTrace();抛出异常了,怎么解决呢?
      

  2.   

    queryForInt只能用于返回一条记录且是number类型的场合,如count,sum等
    你的sql中虽然user_id是number类型,但是实际是返回一个结果集(不管最终是否是一条记录),也就是一个List
    所以你这种场景只能用
    List<Map<String, Object>> rows = this.baseSpringJdbcDAO.getJdbcTemplate().query(sql, parm);
    //处理results,取第一条记录
    if (null != rows && !rows.isEmpty()) {
        Map<String, Object> row = rows.get(0);
        System.out.println(row.get("USER_ID"));
    }
      

  3.   

    query后面好像是三个参数的我刚刚用
    List rows = this.baseSpringJdbcDAO.getJdbcTemplate().queryForList(sql, parm);
     if (null != rows && rows.size()>0) {
     count=Integer.parseInt(rows.get(0).toString());
     }
    这个还不知道行不行呢?
      

  4.   

    rows.get(0) --》这里返回的是一个map(因为有可能要查询多个字段),必须再获取其中的某个字段get("USER_ID");
      

  5.   

    谢谢啊!已经好了!
    他是有异常,但是没关系,抛出来就行了
    就是下面:
    catch(EmptyResultDataAccessException e){
    return 0;
    }