gpt4 book ai didi

java - Jdbctemplate 查询字符串 : EmptyResultDataAccessException: Incorrect result size: expected 1, 实际为 0

转载 作者:IT老高 更新时间:2023-10-28 11:30:35 25 4
gpt4 key购买 nike

我正在使用 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

在我看来,我应该只返回一个 null 而不是抛出异常。我怎样才能解决这个问题?提前致谢。

最佳答案

在 JdbcTemplate , queryForInt, queryForLong, queryForObject 所有这些方法都期望执行的查询将返回一行且仅返回一行。如果您没有获得任何行或多于一行,则会导致 IncorrectResultSizeDataAccessException 。现在正确的方法是不要捕获此异常或 EmptyResultDataAccessException,而是确保您使用的查询应该只返回一行。如果根本不可能,请改用 query 方法。

List<String> strLst = getJdbcTemplate().query(sql, new RowMapper<String>() {
public String 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 element
// either return 1st element or throw an exception
}

关于java - Jdbctemplate 查询字符串 : EmptyResultDataAccessException: Incorrect result size: expected 1, 实际为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10606229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com