Ich habe einige Code, den ich überprüfen können ausgeführt werden soll, wenn eine Klasse, bevor ermöglicht ein Student voll ist darin zu einschreiben. Ich habe die Funktion classFullCheck() mit einem String currentNumberInClass erstellt, der die Anzahl aus einer sql-Tabelle ermittelt und sie mit class_size aus einer anderen Tabelle vergleicht. Ich denke, dass ich die class_id anstelle der Zahl (*) zurückgebe, also funktioniert das nicht richtig. Ich bin auch nicht sicher, wo die Funktion classFullCheck() in die Funktion addClass() eingefügt werden muss, damit diese Überprüfung ordnungsgemäß funktioniert.return count (*) Wert in SQL mit Java
würde Ratschläge geschätzt!
public static void classFullCheck() {
try {
String currentNumberInClass = ("SELECT class_id, COUNT(*) FROM ClassSelector.student_x_class WHERE class_id = " + selectedClass);
rs = myStmt.executeQuery(currentNumberInClass);
String classSize = ("SELECT class_size FROM ClassSelector.classes WHERE class_id = " + selectedClass);
rs = myStmt.executeQuery(classSize);
if (currentNumberInClass.compareTo(classSize) >= 0){
System.out.println("Sorry, this class is Full!");
}
} catch (java.sql.SQLException SQL) {
SQL.printStackTrace();
}
}
public static void addClass() {
try {
rs = myStmt.executeQuery("SELECT * FROM ClassSelector.classes");
while (rs.next()) {
String availableClasses = rs.getString("class_id") + "\t" + rs.getString("class_name") + "\t" + rs.getString("description");
System.out.println(availableClasses);
}
System.out.println("Enter Class ID from Classes Listed Above to Join: ");
selectedClass = sc.nextLine();
rs = myStmt.executeQuery("SELECT * FROM ClassSelector.classes WHERE class_id = " + selectedClass);
while (rs.next()) {
String innerJoin = (userEnterIdAsName + " has been added to " + rs.getString("class_name") + " " + rs.getString("class_id"));
System.out.println(innerJoin);
String student_x_classJoin = "INSERT INTO student_x_class" + "(student_id, student_name, class_id, class_name)" + "VALUES (?, ?, ?, ?)";
PreparedStatement pStmt = con.prepareStatement(student_x_classJoin);
pStmt.setString(1, user_entered_student_id);
pStmt.setString(2, userEnterIdAsName);
pStmt.setString(3, rs.getString("class_id"));
pStmt.setString(4, rs.getString("class_name"));
pStmt.executeUpdate();
System.out.println("Would you like to enroll " + userEnterIdAsName + " into another class? (Y/N)");
String addAdditionalClass = sc.nextLine();
if (addAdditionalClass.equalsIgnoreCase("Y")) {
addClass();
} else if (addAdditionalClass.equalsIgnoreCase("N")) {
return;
}
}
}
catch (java.sql.SQLException SQL) {
System.out.println("Wait, This Student is already enrolled in this class!");
}
}
In classFullCheck vergleichen Sie zwei Strings. Sie müssen die Werte aus dem Resultset abrufen, um einen Vergleich der Zahlen anstelle der Abfragezeichenfolge durchzuführen. – user2260040