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看下结果集里面有没有数据,没有数据那就是没有查询到结果