Ai_Dan 2011-11-01 19:54
浏览 811
已采纳

JdbcTemplate.queryForObject 返回值怎么判断

1、查询表中一条数据。
public Admin findById(String id) throws Exception {
String sql = "select adminid,note,adminflag from admin where adminid=?";
Admin admin = (Admin) this.jdbc.queryForObject(sql,
new Object[] { id }, new int[] { Types.VARCHAR },
new RowMapper(){
public Object mapRow(ResultSet rs,int index)throws SQLException{
Admin a = new Admin();
a.setAdminid(rs.getString("adminid"));
a.setNote(rs.getString("note"));
a.setAdminflag(rs.getInt("adminflag"));
return a;
}
});
return admin;

2、在插入一条新数据时,判断这条数据是否存在。
public boolean doCreate(Admin vo) throws Exception {
boolean flag = false;
[color=red]if(this.findById(vo.getAdminid()) == null){[/color]
String sql = "insert into admin(adminid,password,note,adminflag)values(?,?,?,?)";
if (this.jdbc.update(sql, new Object[] { vo.getAdminid(),
vo.getPassword(), vo.getNote(), vo.getAdminflag() },
new int[] { Types.VARCHAR, Types.VARCHAR, Types.VARCHAR,
Types.INTEGER }) > 0) {
flag = true;
}
}
return flag;

}

异常:
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

我是这么判断的,结果老报错,findById()可以把数据查询出来,而页面也有显示,就是判断这里,出错!

  • 写回答

1条回答 默认 最新

  • sy197661944 2011-11-02 17:16
    关注

    org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

    spring做了封装, queryForObject回去数据库查询一条记录,如果没有记录符合查询条件,或者有多条记录符合条件,都会报出错误,

    只不过 expected 1, actual 0 意味这没有记录符合这查询条件.
    expected 1 可以理解为期望有一条且只有一条符合条件的记录,
    actual 0 意味着,没有记录符合.
    如果 actual * , * 为 > 1 ,那么也会出错.(这个方法就是这么规定的..)

    可以这样写,假设一个简单的表,user.字段有:
    id 和 name.

    queryForInt(select count(1) as c from user where id = ?)

    在结果集中取 c 的值 ,如果大于0,就可以认为有1条或者多条记录.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。