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()方法的前提下,检查是否为空了

Last modification:February 28, 2023
如果觉得我的文章对你有用,请随意赞赏