JDBC查询全部用户,以及低级错误

作者在完成JSP登录作业时遇到Afterendofresultset错误,发现是由于while循环后误加了分号导致的逻辑错误。提醒开发者在处理数据库查询时要细心检查代码和理解Statement的使用规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

After end of result set

最近老师布置了一个作业,其中有一个JSP登录,如果是管理员登录,就查看所有用户的信息。
本来觉得挺简单的任务,我实现的时候就一直报错"After end of result set“

为此我搜了两天半,该改的都改了,愣是没解决问题。

最后我还是从决定再检查一遍我的代码,再不行也许是版本问题什么的?

//我这里只写主要部分:
         Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false", "root", "123456");
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT * FROM user WHERE username='" + username + "' AND password='" + password + "'" + " AND deleted=1");
  //记录是否查询到了数据
            if (!resultSet.next()) {
                out.print("登录失败");
            } else {
                try {
                    out.print("你是管理员,以下是所有用户的信息:<br>");
                    //新的sql语句,查询全部.
                    //注意:这次使用preparedStatement的方法不同
                    ResultSet resultSet2 = statement.executeQuery("select * from user");
                    //查询全部也可用(一开始我写错了逻辑,不小心在while后面加了一个分号,好在单独检查代码的时候看到了)
                    while (resultSet2.next()) ;{
                       //输出语句
                    }
                    resultSet2.close();
                } catch (Exception e) {
                    out.print(e.getMessage());
                    e.printStackTrace();
                }
            }
            statement.close();
            connection.close();
        } catch (Exception e) {
            out.print(e.getMessage());
            e.printStackTrace();
        }

发现问题

 在我的反复查看下终于发现了这行代码:

  while (resultSet2.next()) ;{//输出语句}

没错,我在while()循环后面加了一个分号,这意味着resuleSet2这个结果集将跳转到空指针之后才开始执行接下来的语句,后面的语句都是取出resuleSet2的值的,此时指针为空,当然报错:"After end of result set“.

总结

哦,搞了半天原来是逻辑错了,一开始我还以为,一个statement只能使用一次,查了半天。

所以说啊兄弟们,写代码也要细心细心再细心啊,出了问题首先一字一句的看看自己的代码和报错再去网上查相关的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值