Java 在resultset中循环以搜索不同表上的另一个值

Java 在resultset中循环以搜索不同表上的另一个值,java,sql,jdbc,Java,Sql,Jdbc,我想在结果表中搜索一些特定的结果,使用不同表中的id根据从studentInfo表中选择的学生id计算cgpa,下面是我尝试的,问题是它只计算第一个id,或者更确切地说是学生id String lev = levelCombo.getSelectedItem().toString(); int leve = Integer.parseInt(lev); int le = leve / 100; try { String sql

我想在结果表中搜索一些特定的结果,使用不同表中的id根据从studentInfo表中选择的学生id计算cgpa,下面是我尝试的,问题是它只计算第一个id,或者更确切地说是学生id

    String lev = levelCombo.getSelectedItem().toString();
    int leve = Integer.parseInt(lev);
    int le = leve / 100;
    try {
        String sql
                = "select idNumber from studentInfo where level ='" + lev + "'  ";

        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();
        while (rs.next()) {
            String idNumb = rs.getString("idNumber");
            cgpa(idNumb, le);
            System.out.print("" + idNumb);
        }
    } catch (Exception e) {
    }
}

public void cgpa(String idnumber, int level) {
    float units = 0;
    float ugps = 0;
    float cgp = 0;

    for (int i = 1; i <= level; i++) {
        try {

            String sql = "select sum(UNIT) ,sum(UGP) ,round(sum(UGP) / NULLIF(sum(UNIT), 0), 2) from Results where ID_NUMBER =  ? and  level ='" + i + "'  ";

            pst = conn.prepareStatement(sql);
            pst.setString(1, idnumber);
            rs = pst.executeQuery();
            while (rs.next()) {
                Float un = rs.getFloat("sum(UNIT)");
                Float gp = rs.getFloat("sum(UGP)");
                //  Float sum=rs.getFloat("round(sum(UGP)/NULLIF(sum(UNIT), 0),2)");
                units += un;
                ugps += gp;
                cgp = ugps / units;
                String sql1 = "update academicstatus set cgpa ='" + cgp + "'  ,product='" + ugps 
                        + "',unit='" + units + "' where idnumber = ? ";
                updateAcademicstatus(cgp, ugps, units, idnumber);
                pst = conn.prepareStatement(sql1);
                pst.setString(1, idnumber);
                pst.executeUpdate();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                rs.close();
                pst.close();
            } catch (Exception e) {
            }
        }
    }
}
String lev=levelCombo.getSelectedItem().toString();
int-leve=Integer.parseInt(lev);
int-le=leve/100;
试一试{
字符串sql
=“从studentInfo中选择idNumber,其中级别='”+lev+“'”;
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
while(rs.next()){
字符串idNumb=rs.getString(“idNumber”);
cgpa(idNumb,le);
系统输出打印(“+idNumb”);
}
}捕获(例外e){
}
}
公共无效cgpa(字符串idnumber,整数级){
浮动单位=0;
浮动ugps=0;
浮动cgp=0;

对于(inti=1;i,您是否正在尝试进行单个查询

select  sum(UNIT),sum(UGP),round(sum(UGP)/ ULLIF(sum(UNIT),0),2)idNumber from studentInfo sinfo
join Results re on re.ID_NUMBER = sinfo.idNumber where level='"+lev+"'"

您的问题是什么,您的程序有很多问题您检查了第一个方法的
}
了吗?尝试使用
}catch(Exception ex){ex.printStackTrace();}
并向我们展示您的问题?抱歉},我刚才用手机上传了一个问题我的电脑关机了,问题是它只使用第一个方法中列的第一个值来搜索结果,但我希望它搜索整个列的值