我正在从数据库中选择,我想确定是否需要检查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()
为空或仅在关闭时SQLException
也会抛出RowSet
吗?提出问题的另一种方法:RowSet为空时是否关闭了?
尽管这不能回答您的问题...我会问您为什么不使用JdbcTemplate
的内置转换/映射功能。 Spring为您抽象了大多数ResultSet的打开,迭代,关闭操作,因此您可以专注于将数据映射到对象。您可以使用RowMapper
的实现,该实现为您提供mapRow(ResultSet rs, int rowNum)
方法,并且可以将每一行映射到一个对象。如果没有行返回,则映射器将永远不会执行。每个映射的结果都进入一个列表,因此如果没有行,则您的列表将为空。
List<MyType> rowsFromDatabaseMapped = jdbcTemplate.query(SQL_STR, new Object[]{any_params}, new MyTypeMapper());