我使用Jdbctemplate从数据库中检索单个字符串值。以下是我的方法。
public String test() {
String cert=null;
String sql = "select ID_NMB_SRZ from codb_owner.TR_LTM_SLS_RTN
where id_str_rt = '999' and ID_NMB_SRZ = '60230009999999'";
cert = (String) jdbc.queryForObject(sql, String.class);
return cert;
}
在我的场景中,查询完全可能不被击中,所以我的问题是如何绕过以下错误消息。
EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
在我看来,我应该返回一个空值,而不是抛出一个异常。我怎么才能修好这个?提前谢了。
在JdbcTemplate、QueryForInt
、QueryForLong
、QueryForObject
中,所有这些方法都希望执行的查询返回一行,而且只返回一行。如果没有获得任何行或获得多行,这将导致IncorrectresultsizeDataAccessException
。现在正确的方法是不捕获此异常或EmptyResultDataAccessException
,但要确保使用的查询只返回一行。如果根本不可能,则使用query
方法。
List<String> strLst = getJdbcTemplate().query(sql,new RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
return rs.getString(1);
}
});
if ( strLst.isEmpty() ){
return null;
}else if ( strLst.size() == 1 ) { // list contains exactly 1 element
return strLst.get(0);
}else{ // list contains more than 1 elements
//your wish, you can either throw the exception or return 1st element.
}
问题内容: 我正在使用Jdbctemplate从数据库中检索单个String值。这是我的方法。 在我的情况下,完全可以在查询中不击中,所以我的问题是如何解决以下错误消息。 在我看来,我应该只返回null而不是抛出异常。我怎样才能解决这个问题?提前致谢。 问题答案: 在JdbcTemplate,,中,所有这些方法都希望执行的查询将仅返回一行。如果没有行或多于一行,将导致。现在正确的方法不是捕获此异常
当我提交复制数据时,我出现了以下错误,这里是代码… 和DAO类。 这个错误来了,任何人都可以帮助解决这个问题。
这是我的DAO代码 这是我的控制器代码 这就是错误 消息请求处理失败;嵌套异常为org。springframework。道。IncorrectResultSizeDataAccessException:结果大小不正确:预期为1,实际为10
我在测试环境方面工作。
我正在使用cassandra 3.11.11。它运行良好,但现在当我在下面运行查询时显示此错误。重要的是要说应用程序中没有任何变化。
我已经构建了一个简单的登录页面,其中使用用户提供的用户名从数据库中获取所需的行,并根据用户提供的值检查凭据。 我面临的问题是,如果用户输入数据库中不存在的用户名值,我将面临此错误 org.springframework.dao.EmptyResultDataAccess异常: 不正确的结果大小: 预期的 1, 实际的 0 这意味着我的数据库没有任何具有所需用户名的行。 代码: 索引页: 用户道(其