点子来自于 StackOverflow: https://stackoverflow.com/questions/867194/java-resultset-how-to-check-if-there-are-any-results
Java使用数据库嘛,那基本上就是JDBC的事情了
并且基本都会用 ResultSet 来储存数据库的返回值
一般来说,都是用 resultSet.next()来检查返回值是否为空
但是,这玩意会直接读取第一行的内容
当再次使用这个方法的时候,就是从第二行开始的了
举个例子
比如下面的这段代码,使用next()方法检查是否为空之后,再使用while循环读取其中的数据
//false -> 返回集合为空
if (rs.next() == false) {
conn.close();
rs.close();
return Response.status(Response.Status.NO_CONTENT).build();
}
//读取rs中的每一个值
while (rs.next()) {
Event event = new Event();
这个就会导致一个问题,当使用while循环读取数据的时候,总是从第二行开始的
这个是因为在前面就已经使用过next()方法了,这里再次使用的话就是从第二行开始的了
所以,不妨换个思路,使用isBeforeFirst()方法
这个和next()类似,但是当resultSet为空或者第一行之前没数据的时候,会返回false
这样就可以在不影响next()方法的前提下,检查是否为空了