Java中嵌套的数据库操作

  今天碰到了一件较为棘手的Java中连接数据库的实例。

  问题的产生式这样的:老师让M·Li师妹写个自动编排学号的小程序,初步思想是:①把本省的少数民族学生平均到各个班;②把外省的学生平均到各个班;③把本省的学生按性别平均分到各个班(分几个班视该专业录取的学生数临时决定)。

  我们最开始的想法是这样的:(以下是伪代码)

int n=0;
String m
=jTextField.getText();//m为班级数

//JDBC连接数据库
ResultSet rs=state.executeQuery();//根据某条件查询复核条件的学生信息
while(rs.next())
{
  String temp
=rs.getString("考生号");//得到第一个考生的考生号
  ResultSet rs1=state.executeQuery();
  
//update,SQL语句中对指定的考生号设置班级号n%m+1(m已转换为int型)
  rs1.close();
  
++n;
}
rs.close();
//try、catch语句

 

  在调试的时候突然发现,无论rs.next()有多少条结果,里面的更新数据库语句只能对第一条select到的数据进行更新,然后这个while就执行完了。经过多次调试和运行,我们终于确定了在while(rs.next())里面是不能直接进行SQL语句操作,否则最外面的rs.next()只能运行一次,while的作用根本就发挥不出来。在没想出办法的情况下,我们都想到了传说中很无敌的goto语句(囧)。在Java中就是:

flag:
……
break flag;

 

  调试之后发现这样也不行,那么说明在while(rs.next())里面再次使用SQL语句会对外层的rs.next()有影响。最后只好考虑将while()里面的涉及数据库操作的代码单独拿出来,写一个void temp (String ksh)的方法,然后在while中直接temp(rs.getString("考生号")),这样就可以解决问题了。

posted @ 2009-08-23 23:53  Derek_nr  阅读(815)  评论(0编辑  收藏  举报