0

我从数据库中选择,我想确定是否需要检查是否RowSet为空。我需要做一个简单的if陈述还是可以留下?

那么这就够了吗?

    //RowSet rs = (...)
    try {
        rs.next()
        //process data
    } catch (SQLException e) {

    }

还是我必须像这样在其中添加一个 if 语句:

    //RowSet rs = (...)
    try {
        if (rs.next()) {
            //process data
        }
    } catch (SQLException e) {

    }

即使它是空的还是只是在它关闭时rs.next()抛出?另一种提问方式:RowSet 为空时是否关闭?SQLExceptionRowSet

4

1 回答 1

2

虽然这不能回答你的问题......我会问你为什么不使用JdbcTemplate. Spring 为您抽象出大部分 ResultSet 打开、迭代、关闭操作,以便您可以只专注于将数据映射到对象。您可以使用RowMapper为您提供mapRow(ResultSet rs, int rowNum)方法的实现,并且您可以将每一行映射到一个对象。如果没有行返回,则映射器永远不会执行。每个映射的结果都会进入一个列表,因此如果没有行,那么您的列表将为空。

List<MyType> rowsFromDatabaseMapped = jdbcTemplate.query(SQL_STR, new Object[]{any_params}, new MyTypeMapper());
于 2020-02-12T15:00:49.260 回答