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 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?