0
그래서 첫 번째 쿼리의 결과가 한 번만 업데이트되는 문제가 있습니다. 업데이트 문은 한 번만 실행됩니다.
Statement statement = con1.createStatement();
ResultSet qResult = statement.executeQuery("select e.Grade, e.StudentID, s.StudentID, s.Classification, s.CreditHours, s.GPA"+ " " +
"from Enrollment e, Student s" + " " +
"where e.StudentID = s.StudentID");
double grade = 0.00;
int tCredits = 0;
float newGpa = 0;
String nClass = "";
PreparedStatement statement2;
int rowCount = 0;
String sId = "";
//loop results
while(qResult.next())
{
sId = qResult.getString(2);
//1 parse grade - convert to double and save to variable
grade = parseGrade(qResult.getString(1));
//2 save Tcredit hours to var
tCredits = qResult.getInt(5);
//3 calc new GPA = ((gpa * tCred)+ (3 * grade))/(tCred +3)
newGpa = (float) (((qResult.getDouble(6) * tCredits) + (3 * grade))/(tCredits + 3));
//4 add 3 to Tcredit hours
tCredits = tCredits + 3;
//5 check tCredit hours and update classification
nClass = getNewClass(tCredits);
//6 Update Tables!!
statement = con1.createStatement();
rowCount += statement.executeUpdate("update Student" + " " +
"set Classification=" + "'" + nClass + "'" + ", GPA=" + newGpa +", CreditHours=" + tCredits + " " +
"where StudentID=" + qResult.getString(2));
}
System.out.println("rows Changed:::: " + rowCount);
//statement.close();
}
나는 내 선택 쿼리의 결과를 횡단 각 결과를 업데이트하려합니다. 나는 여러 번 수업에 등록한 학생이 여러 명이므로 두 번 이상 반납해야합니다.
그러나 학점은 등록 테이블에있는 모든 학생에게만 업데이트됩니다 (+3).
도와주세요, 감사합니다!
메신저 아직도 조금 혼란 스럽네요. 그래서 수정하는 것이 모두 문장 = con1.createStatement (ResultSet.CONCUR_UPDATABLE, ResultSet.TYPE_SCROLL_SENSITIVE)입니다. – Aziz