使用JdbcTemplate从数据库中检索数据时如何处理EmptyResultDataAccessException?

时间:2015-02-25 16:16:15

标签: spring-mvc

当我要检索数据库中不存在的数据时,我会遇到异常。我正在使用spring并使用JdbcTemplate来执行此操作。我想在这种情况下得到null。有人可以帮我解决这个问题吗?

Exception in thread "main" org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:806)
at com.hojat.LibSpringMVCProject.DAO.BookDAO.getBookById(BookDAO.java:24)
at com.hojat.LibSpringMVCProject.service.BookService.getBookById(BookService.java:24)
at com.hojat.LibSpringMVCProject.service.TestService.main(TestService.java:37)

2 个答案:

答案 0 :(得分:1)

如果要从此查询返回null您应该尝试捕获此示例中的异常:

    //Assuming your querying for varchar column
    String sqlSelect = "SELECT QUERIED_COLUMN 
    FROM YOUR_TABLE WHERE YOUR_CONDITION = ?";
    try {
        return getJdbcTemplate().queryForObject(sqlSelect, 
        new Object[] {yourParam}, String.class);
    } catch (EmptyResultDataAccessException e) {
        return null;
    }

答案 1 :(得分:0)

考虑我想从id数据库中检索记录,在我的数据库id是101所以我想检索101个细节,当我运行程序时,o / p将生成如下所示

cid:101
cname:abhi
caddr:hyd

如果您尝试从数据库中检索数据并且数据库中不存在数据,则会生成以下异常

结果大小不正确:预期为1,实际为0

发生此异常可能有两个原因,第一个是错误的数据访问,第二个是数据库中不存在但您尝试访问的数据,这就是它。