很多时候我们都要判断ResultSet是否存在记录, 但是java里ResultSet 这个对象没有提供一个方法能判断 ,我们只能用next这个方法, next会滚动一条记录丢失第一条数据, 往往很多时候都需要第一条记录,所以我们要做相应的处理 我平常在开发中用到了以下两种形式 。
第一种方法 不及时更新ResultSet 结果集
- //sql脚本
- String sql="seelect * from tb_demo";
- //改成可以双向滚动,但不及时更新,就是如果数据库里的数据修改过,
- //并不修改ResultSet记录 必须要改成 TYPE_SCROLL_INSENSITIVE
- PreparedStatement pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
- ResultSet.CONCUR_READ_ONLY);
- //执行查询
- ResultSet rs = pstmt.executeQuery();
- //判断是否存在记录
- if (rs.next()) {
- //存在记录 rs就要向上移一条记录 因为rs.next会滚动一条记录了
- rs.previous();
- //在执行while 循环
- while(rs.next()){
- system.out.println(rs.getInt(1));
- }
- }
推荐第二种方法 及时更新ResultSet 结果集
- //sql脚本
- String sql="seelect * from tb_demo";
- PreparedStatement pstmt = conn.prepareStatement(sql);
- //执行查询
- ResultSet rs = pstmt.executeQuery();
- //判断是否存在记录
- if (rs.next()) {
- //有的话 先获取第一条记录
- do{
- System.out.println(rs.getInt(1));
- } while(rs.next());
- }