Я сижу и прихожу к ошибкам с помощью кода и некоторое время не сообщаю об ошибках. Я не могу понять, почему работает только одно из моих выходных значений.Использование хранимой процедуры для вывода данных в Java
У меня в моей базе данных «студент» с колонками, снумом, змеей, майором, уровнем и возрастом.
Вот моя процедура я создал:
SELECT student_name = sname,
student_major = major,
student_level = level, student_age = age
FROM student
WHERE snum = student_num
Мои параметры:
INOUT student_num BIGINT(20)
OUT student_name VARCHAR(255)
OUT student_major VARCHAR(255)
OUT student_level VARCHAR(255)
OUT student_age BIGINT(20)
То, что я пытаюсь сделать с этим пользователь ввел студент идентификационный номер, то я получить остальную часть информации, которая студента, как только я найти соответствие Student ID в базе данных.
public void procedureGetStudentInfo(String spName) {
try {
statement = connection.createStatement();
//Creating variables to store the output of the procedure
int id = 0;
String student_name = "";
String student_major = "";
String student_level = "";
int student_age = 0;
CallableStatement myCallStmt = connection.prepareCall("{call "+spName+"(?,?,?,?,?)}");
myCallStmt.setInt(1, student_num);
myCallStmt.registerOutParameter(1, Types.BIGINT);
myCallStmt.registerOutParameter(2, Types.VARCHAR);
myCallStmt.registerOutParameter(3, Types.VARCHAR);
myCallStmt.registerOutParameter(4, Types.VARCHAR);
myCallStmt.registerOutParameter(5, Types.BIGINT);
myCallStmt.execute();
//Grabbing information from query
id = myCallStmt.getInt(1);
student_name = myCallStmt.getString(2);
student_major = myCallStmt.getString(3);
student_level = myCallStmt.getString(4);
student_age = myCallStmt.getInt(5);
//Outputting information to user
System.out.println("Student ID: " + id);
System.out.println("Student Name: " + student_name);
System.out.println("Student Major: " + student_major);
System.out.println("Student Level: " + student_level);
System.out.println("Student Age: " + student_age);
}
catch (SQLException e) {
e.printStackTrace();
}
}
Выход: Student ID: 51135593 Имя студента: нулевой Студент Major: нулевой Студент Уровень: нулевой Student Возраст: 0
Идентификатор устанавливается пользователем, так это было легко. Мне даже не нужно извлекать его из базы данных, но другие 4 значения - это то, что я не могу получить.
Если кто-то может мне помочь, это было бы высоко оценено. Я хочу научить себя SQL и хорошо разбираться в этом, но тривиальный материал, который я застрял на месте.
Когда я запускаю хранимую процедуру после выполнения этой настройки, каждое значение возвращает значение null. – WegnerLJ26