while循环里使用resultset第二次循环的时候取不到结果

while循环里重复调用resultset的问题

while(true) {
                try {
                    //建立连接
                    Connection new_conn =JdbcUtil.myconn();
                    PreparedStatement new_ps = null;
                    ResultSet new_rs = null;

                    String find_stu="select * from student where id=?";
                    new_ps=new_conn.prepareStatement(find_stu);

                    System.out.println(id);
                    new_ps.setObject(1, id);//id为字段名为id的字段
                    new_rs=ps.executeQuery();
                    //while(true)的循环循环到第二次这里就进不去了,result取出的结果集为空???
                    while(new_rs.next()) {

                    System.out.println("1.学生学号:"+new_rs.getInt(2));
                    System.out.println("2.学生姓名:"+new_rs.getString(4));
                    System.out.println("3.学生性别:"+new_rs.getString(5));
                    System.out.println("4.学生年龄:"+new_rs.getInt(6));
                    System.out.println("5.学生电话:"+new_rs.getLong(7));
                    /**
                     * 展示该学生已选课程
                     */
                    }


                    System.out.println("0.返回");
                    System.out.print("返回请输入0,修改某一项请输入修改项的序号");
                    int opr_num;
                    opr_num = in.nextInt(); in.nextLine();
                    switch (opr_num) {
                    case 1:
                        Change.change_stunum(sec_num);
                        break;
                    case 2:
                        Change.change_stuname(sec_num);
                        break;
                    case 3:
                        Change.change_stusex(sec_num);
                        break;
                    case 4:
                        Change.change_stuage(sec_num);
                        break;
                    case 5:
                        Change.change_stuphone(sec_num);
                        break;
                    case 0:
                        flag=false;
                        break;

                    default:
                        break;
                    }
                    if(flag==false) break;


            }
                 catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally {

                }
            }

都没看到你的id从哪里来的

问题1:没有关闭连接(这个有可能是导致第二次查不到的原因)
问题2:多次查询的while循环嵌套查询语句即可,把数据库连接和关闭的操作移到外层,包含这个while循环,因为多次查询没有必要每次都去创建连接

没明白你说的是哪个while,看你代码里有两个while。
如果是里面的那个while,第二次遍历拿不到的话,你可以直接使用sql在数据库中查一下看看你的数据。
如果是外面的while的话,第二次遍历拿不到数据的话,可能跟你的参数id有关。

给你点建议:
项目中尽量避免遍历操作数据库。

一楼纠结这个干吗,可能是函数传参,这只是部分代码。
二楼说的很对,需要关闭连接,或者放到外面,不管怎么样都要在下个连接前关闭上个连接。
三楼没看楼主说的么,是while(true)这个循环的。

给你提供下思路吧,第二次就不循环了,有可能确实是没有查到数据,debug看下结果集里面有没有数据,没有数据那就是没有查询到结果