Я работаю над сценарием, где я должен выполнить SQL-запрос в JDBC, чтобы найти информацию о студентах, обучающихся по определенному предмету. Когда этот запрос выполняется, одновременно отображаются три записи. Затем пользователю предлагается либо нажать Enter, чтобы вернуться в главное меню, либо нажать B, чтобы продолжить просмотр результатов или ввести StudentID, чтобы вывести результаты из предыдущих семестров. В моем коде ниже, после отображения 3 результатов, мой код работает правильно, когда пользователь нажимает Enter или B. Однако после ввода StudentID и выполнения суб-запроса код автоматически отображает главное меню. Я бы хотел, чтобы он вернулся и продолжал показывать оставшиеся результаты, как вариант B для просмотра.Невозможно вернуться к результатам запроса SQL JDBC после выполнения подзапроса
Ниже приведен фрагмент кода:
// Below is the SQL query that will be executed
// This snippet is part of loop where all different subjects are entered into an array and then user selects one subject
String displayStudent = "select * from students where subject = '" + subjectArray[choice - 1] + "'";
ResultSet displayThisList = stmt.executeQuery(displayStudent);
while (displayThisList.next()) {
System.out.println("Fname: " + displayThisList.getString(2));
System.out.println("Lname: " + displayThisList.getString(3));
System.out.println("StudentID: " + displayThisList.getString(1));
System.out.println("Grade: " + displayThisList.getString(4));
System.out.println("Subject: " + displayThisList.getString(5));
System.out.println();
subCount++;
if ((subCount % 3 == 0)) {
String response = readEntry("Enter StudentID to view last semester results or\nB Enter to browse or \nENTER to go back:");
System.out.println();
if (response.equals("")) {
// Back to member menu
break;
} else if (response.equals("B")) {
// Continue to browse
continue;
} else {
// Check if the StudentID is valid or not
int checkID = 0;
String queryID = "select * from students where StudentID='" + response + "'";
ResultSet setID = stmt.executeQuery(queryID);
while (setID.next()) {
String FName = setID.getString(2);
String LName = setID.getString(3);
String Grade = setID.getString(4);
String Subject = setID.getString(5);
checkID++;
System.out.println("Correct ID was entered");
//Code to execute query based on above info from a different table
}
if (checkID == 0) {
System.out.println();
System.out.println("Invalid ID. Please enter again.");
System.out.println();
}
}
}
}
исправлена ошибка опечатка – xs2dhillon
Меняются ли вы переменную 'displayThisList' в«Код для выполнения запроса и т.д. ...»? –
Нет, я не хочу. Допустим, что когда пользователь вводит идентификатор студента, он отображает только «Идентификатор правильности», а затем должен вернуться к оставшимся результатам. Я добавил этот оператор печати ниже инструкции: checkID ++ – xs2dhillon